Как Magento документация штаты, вам нужно настроить работу cron на вашем веб-сервере, чтобы получать такие вещи, как письма с подтверждением заказа для отправки, например:
* * * * * / bin / sh /absolute/path/to/magento/cron.sh
Это очень простая работа cron. Проблема в том, что автоматизированные задачи не завершаются в Magento. Это как если бы скрипт не запускался заданием cron. В результате письма с подтверждением заказа не отправляются (среди всех других автоматических задач Magento).
Я установил Планировщик AOE расширение, чтобы перепроверить каждую автоматизированную задачу в Magento и посмотреть, когда задачи завершаются (или, в этом случае, когда они не выполняются). Ни одна из задач, включая core_email_queue_send_all
завершаются с интервалом в 1 минуту.
Теперь вот странная часть. Если я просто пойду запустить cron.php
сценарий (cron.sh
триггеры cron.php
загрузив его в мой веб-браузер по адресу mydomain.com/cron.php
Автоматизированные задачи Magento все выполняют! И так как скрипт работает так, когда я запускаю его вручную, и я знаю, что задания cron работают … Я не могу понять это!
Пожалуйста помоги!
ДОПОЛНИТЕЛЬНЫЕ ДЕТАЛИ
Вот как я знаю, что задания cron работают — я протестировал задания cron на своем сервере, создав сценарий PHP, который отправляет основное электронное письмо с mail()
и запускал задание cron, аналогичное приведенному выше, чтобы выполнять его каждую минуту — задание cron работает нормально. Я тоже получаю MAILTO
электронные письма с сервера каждый раз, когда запускается задание cron. Нет ошибок, которые я вижу.
Я также могу выполнить эту точную команду в задании cron …
/ bin / sh /absolute/path/to/magento/cron.sh
…в терминале, когда я в SSH, и он успешно запускает сценарий и Magento выполняет все автоматизированные задачи. Это просто не работает каждую минуту в работе cron!
Это совершенно странно, и я не могу понять его …. В конце концов, все это работа, которую я сделал на этом магазине Magento является спорным, если клиент не может проверить и получить подтверждение электронной почты.
Любой совет будет чрезвычайно признателен.
ОБНОВИТЬ
Я смог обойтись с помощью wget
команда позвонить cron.php
, но это все еще не похоже на постоянное решение.
wget -O /dev/null -q http://domain.com/cron.php
Хотя сейчас технически это работает, в документации Magento рекомендуется запускать cron.sh
не cron.php
, Тем не менее, хотелось бы получить конкретный ответ на вопрос, почему не работает cron cron.sh
с sh
,
Некоторые шаги, которые я бы попробовал:
В терминале:
Проверьте свой журнал cron:
tail -f /var/log/cron
Вы видите команды запуска?
Проверьте наличие cronjobs:
crontab -l
Проверьте, есть ли у пользователя cron права на выполнение файла, если нет:
chmod +x file.sh
Cron работает? проверьте, запущен ли процесс:
pgrep crond
В случае ошибок вы получите электронное письмо с записью ошибки,
но это требует настройки в первую очередь. Вы можете увидеть решение здесь
https://www.phase2technology.com/blog/how-to-enable-local-smtp-server-postfix-on-os-x-leopard/
В этом случае это решение здесь помогло мне http://support.xtento.com/wiki/Setting_up_the_Magento_cronjob
Моя среда — OSX El Capitain с включенным локальным почтовым постфиксом для отправки электронных сообщений о состоянии cron на учетную запись gmail, которую я настроил для тестирования заказов в моем магазине Magento, MAMP для локального тестирования Magento и установленное и настроенное расширение AOE Scheduler Magento.
Код, который работал для меня:
MAILTO="[email protected]"
curl -s -o /dev/null http://www.YOURDOMAIN.com/PATH_TO_MAGENTO/cron.php /dev/null
Я надеюсь, что это кому-то поможет, так как я потерял почти 2 дня, получая правильные настройки. Удачи!