สำหรับผู้ที่สนใจฉันคิดว่าฉันสามารถนำความรู้บางอย่างเกี่ยวกับเรื่องนี้มาใช้ มันดูเหมือนว่าจะเป็นปัญหาการทำงานพร้อมกัน (แย่ง) ใน \ วีโอไอพี \ Framework \ รหัส \ GeneratedFiles :: cleanGeneratedFiles เมื่อ var / ธง .regenerate มีการตั้งค่าและมากกว่าหนึ่งพยายามกระบวนการ / การร้องขอในการทำความสะอาดไฟล์ที่สร้างขึ้น
มีแนวโน้มที่จะเกิดขึ้นเมื่อคุณเปิดใช้งาน cron และกลุ่ม cron จำนวนมากที่ใช้การกำหนดค่า use_separate_process เมื่อมีมากกว่าหนึ่งกระบวนการพยายามที่จะทำความสะอาดเดียวกัน FileIterator ล้มเหลวด้วยข้อความต่าง ๆ ที่คล้ายกับ: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.
การย้ายสายไปยัง$this->write->delete(self::REGENERATE_FLAG);
หลังจากการตรวจสอบการตั้งค่าสถานะแก้ไขปัญหาได้เนื่องจากกระบวนการที่มาถึงครั้งแรกทำเครื่องหมายตัวเองว่ารับผิดชอบการล้างไฟล์
ฉันปล่อยให้วิดีโอสาธิตเกี่ยวกับวิธีการจำลองปัญหาที่นี่ :
https://youtu.be/9-X1cIIY7y8
และสคริปต์ที่ใช้มัน
#!/bin/bash
# \Magento\Framework\Code\GeneratedFiles has a concurrency problem
# Create regenerate flag and launch parallel commands that try to regenerate at the same time
# This is a real case, cron:run launches stand alone processes in parallel
# Created by magento composer installer upon code install or module enable/disable
touch var/.regenerate
# Launch parallel commands
# Error differs each execution, sometimes it even works
bin/magento cron:run --group=ddg_automation --bootstrap=standaloneProcessStarted=1 2>&1 &
bin/magento cron:run --group=index --bootstrap=standaloneProcessStarted=1 2>&1 &
wait
echo "All done"
setup:upgrade
นั้นแคชจะปิดการใช้งานโดยอัตโนมัติ