Pertama-tama, saya tidak dapat menemukan info tentang masalah seperti ini di web.
Kami memiliki lingkungan produksi dengan integrasi git . Kami menarik perubahan kami hanya melalui git ( git pull ).
Masalahnya adalah, entah bagaimana dalam salah satu langkah Magento cache dinonaktifkan secara otomatis (semua nol saat memeriksa cache: status) . Itu menyebabkan masalah jika hal ini terlewatkan melalui programmer yang menyebabkan server overload karena lalu lintas tinggi 'bashing' ke Magento tanpa cache.
Mungkin sebagian dari Anda pernah melihat masalah ini sebelumnya? Kami tidak tahu kapan atau bagaimana tepatnya itu terjadi.
Dan itu agak muncul secara acak.
Langkah-langkah biasa yang kami lakukan:
- memungkinkan pemeliharaan
- git pull
- pemasangan komposer (jika perlu)
- modul mengaktifkan Vendor_ModuleName (jika perlu)
- setup: upgrade (jika perlu)
- membersihkan barang-barang statis
- perintah penyebaran
- membersihkan kliring
- membersihkan opcache
- menonaktifkan pemeliharaan
Saya akan sangat menghargai saran berharga yang dapat membantu menyelesaikan masalah seperti ini.
sumber
setup:upgrade
maka cache akan dinonaktifkan secara otomatisuJawaban:
Ini terlihat seperti masalah yang diketahui :
Ini memang terjadi dari waktu ke waktu pada proyek yang saya kerjakan, tetapi saya tidak dapat menemukan langkah-langkah untuk mereproduksi. Yang bisa saya katakan adalah itu terjadi selama proses penyebaran.
Yang dapat saya temukan adalah bahwa dalam keadaan tertentu suatu file
.regenerate
ditulis dalamvar
folder (baik pada pengaturan upgrade atau komposer instal / upgrade) dan jika file itu ada saat menjalankansetup:di:compile
cache dinonaktifkan dan diaktifkan kembali ketika proses kompilasi selesai.Untuk beberapa alasan, terkadang cache tidak diaktifkan kembali.
Kami mengambil pendekatan yang cepat dan kotor dan memastikan langkah terakhir dari proses penempatan
php bin/magento cache:enable
. Jadi pada dasarnya kami menyembunyikan kotoran di bawah permadani.Anda dapat menemukan kode yang menonaktifkan cache di sini.
Itu dibungkus dengan
TODO: remove
pernyataan.sumber
Bagi siapa pun yang tertarik, saya pikir saya bisa menjelaskan masalah ini. Tampaknya menjadi masalah konkurensi (kondisi ras) di \ Magento \ Framework \ Code \ GeneratedFiles :: cleanGeneratedFiles, ketika flag var / .regenerate diatur, dan lebih dari satu proses / permintaan mencoba untuk membersihkan file yang dihasilkan .
Ini lebih mungkin terjadi ketika Anda mengaktifkan cron, dan banyak grup cron menggunakan config use_separate_process. Ketika lebih dari satu proses mencoba untuk membersihkan yang sama, FileIterator gagal dengan pesan berbeda yang mirip dengan:
FilesystemIterator::__construct(/Users/adrianmartinez/Sites/r2-project-develop-b2b/environments/2-2-develop-b2b/magento/generated/code): failed to open dir: No such file or directory.
Memindahkan panggilan ke
$this->write->delete(self::REGENERATE_FLAG);
, tepat setelah tanda keberadaan ditandai untuk menyelesaikan masalah, karena proses kedatangan pertama menandai dirinya sebagai yang bertanggung jawab untuk membersihkan file.Saya meninggalkan di sini video demo tentang cara mereplikasi masalah : https://youtu.be/9-X1cIIY7y8
Dan skrip yang digunakan untuk itu:
sumber