Magento มีสองสคริปต์ cron ในไดเรกทอรีรากของมัน cron.php และ cron.sh
อันไหนดีกว่ากันและทำไม
Magento มีสองสคริปต์ cron ในไดเรกทอรีรากของมัน cron.php และ cron.sh
อันไหนดีกว่ากันและทำไม
คำตอบ:
มันจะเป็นการดีที่สุดที่จะเรียกใช้ cron.sh
ตั้งแต่ Magento EE 1.13.x และ CE 1.8.x กลไก cron ได้เปลี่ยนไปโดยที่ Magento ได้เปิดตัวฟังก์ชั่นโหมดตั้งเวลาใหม่
มี 2 โหมดให้เลือก: 1. ค่าเริ่มต้น - เรียกใช้ crons ที่ตั้งเวลาไว้ 2. เสมอ - ตามชื่อที่บอกว่างานเหล่านี้จะถูกดำเนินการอย่างไม่มีเงื่อนไขทุกครั้งที่มีการเรียก cron และไม่ต้องการกำหนดการที่กำหนดไว้อย่างชัดเจน
โดยทั่วไป cron.php ถูกเรียกโดยไม่มีพารามิเตอร์ใด ๆ ใช้ shell_exec เพื่อดำเนินการสองกระบวนการของ cron.sh แต่ละรายการมีพารามิเตอร์ที่แตกต่างกัน (“ ค่าเริ่มต้น” หรือ“ เสมอ”) Cron.sh จะส่งผ่านพารามิเตอร์นี้กลับไปที่ cron.php ซึ่งจะเรียกใช้งาน cron ภายในวีโอไอพีใช้โครงสร้างพื้นฐานเหตุการณ์เพื่อประมวลผลสองโหมดโดยการส่งเหตุการณ์ที่มีชื่อ "ค่าเริ่มต้น" และ "เสมอ" Mage_Cron ใช้สองวิธีผู้สังเกตการณ์
ดูที่ cron.php คุณจะสังเกตเห็นการใช้งานฟังก์ชั่น PHP shell_exec นอกเหนือจากความกังวลด้านความปลอดภัยแล้วฟังก์ชันยังสามารถส่งคืนค่า NULL ได้ทั้งเมื่อเกิดข้อผิดพลาดหรือโปรแกรมไม่สร้างเอาต์พุต ไม่สามารถตรวจพบความล้มเหลวในการดำเนินการโดยใช้ฟังก์ชั่นนี้ ซึ่งหมายความว่า ณ จุดใดก็ตามเมื่อสคริปต์ / รหัสของคุณล้มเหลวเนื่องจากข้อผิดพลาดเกิดขึ้นต่อไปนี้: 1. cronjob กลายเป็นเก่า 2. ไม่มีการบันทึกข้อผิดพลาด 3. และไม่มีใครรู้ว่าสิ่งนี้เกิดขึ้น
เพื่อเอาชนะสิ่งนี้ควรเพิ่ม cronjob ต่อไปนี้:
*/5 * * * * www-data /bin/sh /path/to/magento/cron.sh cron.php -m=default
*/5 * * * * www-data /bin/sh /path/to/magento/cron.sh cron.php -m=always
สิ่งนี้จะช่วยให้มั่นใจได้ว่าโหมดกระบวนการจะทำงานตลอดเวลาโดยไม่ต้องใช้ฟังก์ชัน fallback PHP shell_exec และ cron ไม่ควรค้างเนื่องจากข้อผิดพลาดเกิดขึ้นหากข้อผิดพลาดเกิดขึ้น
*/5 * * * * www-data /bin/sh /path/to/magento/cron.sh cron.php -m=default */5 * * * * www-data /bin/sh /path/to/magento/cron.sh cron.php -m=always
และคำสั่งเหล่านี้ให้ข้อผิดพลาด "ไม่พบคำสั่ง" โดย nupur walia
*/5 * * * * /bin/sh /path/to/magento/cron.sh cron.php -m=default
www-data
จะเปลี่ยนเป็นสิ่งที่ผู้ใช้เรียกใช้กระบวนการเซิร์ฟเวอร์เว็บ นอกจากนี้ยังมีข้อสังเกตว่าสำหรับการตั้งค่าโฮสต์ CPanel / WHM จำนวนมากshell_exec()
จะถูกปิดการใช้งาน