답변:
cron.sh를 실행하는 것이 가장 좋습니다.
Magento EE 1.13.x 및 CE 1.8.x에서 Magento가 새로운 스케줄링 모드 기능을 도입 한 위치에서 크론 메커니즘이 변경되었습니다.
사용 가능한 모드는 두 가지입니다. 1. 기본값-예약 된 크론을 실행합니다. 2. always-이름에서 알 수 있듯이 이러한 작업은 cron이 트리거 될 때마다 무조건 실행되며 명시 적으로 정의 된 일정이 필요하지 않습니다.
기본적으로 cron.php는 매개 변수없이 호출되며 shell_exec를 사용하여 cron.sh의 두 프로세스를 실행합니다. 각각 다른 매개 변수 ( "default"또는 "always")가 있습니다. Cron.sh는이 매개 변수를 cron.php로 다시 전달한 다음 cron을 실행합니다. 내부적으로 Magento는 이벤트 인프라를 사용하여 이름이 "default"및 "always"인 이벤트를 전달하여 두 가지 모드를 처리합니다. 그런 다음 Mage_Cron은 두 개의 옵저버 메소드를 구현합니다.
cron.php를 보면, PHP 함수 shell_exec의 사용법을 알 수 있습니다. 보안 문제와는 별도로, 함수는 오류가 발생하거나 프로그램이 출력을 생성하지 않을 때 NULL을 리턴 할 수 있습니다. 이 기능을 사용하여 실행 실패를 감지 할 수 없습니다. 즉, 오류로 인해 스크립트 / 코드가 실패하면 다음과 같은 상황이 발생합니다. 1. cronjob이 오래되고, 2. 오류가 기록되지 않습니다.
이를 극복하려면 다음 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
이렇게하면 대체 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에 의해 "command not found"에러를 발생시킵니다
*/5 * * * * /bin/sh /path/to/magento/cron.sh cron.php -m=default
www-data
웹 서버 프로세스를 실행하는 모든 사용자로 변경됩니다. 또한 많은 CPanel / WHM 호스팅 설정의shell_exec()
경우 비활성화 될 것입니다.