Я витратив майже 3 дні і не в змозі зрозуміти і змусити Magento Cron обробляти заплановані завдання. Я запускаю Magento 1.9.1.0 і нещодавно помітив, що електронні листи з замовленням тепер стають у чергу, а не надсилати миттєво. Я розумію необхідність, але не можу змусити систему вибирати черги.
Ось моє бачення Cronjob.
Ось мій командний рядок cronjob.
Ось як створюються завдання в таблиці cron_schedule.
Оскільки записи створюються в таблиці cron_schedule, я думаю, що Cron працює раз на кожні 5 хвилин. Якщо я видаляю ці записи вручну через PhpMyAdmin, записи створюються автоматично через деякий час.
Але статус завдань залишається "незавершеним" і ніколи не закінченим. Не впевнений, чи щось не так у моїй конфігурації чи я щось пропускаю. Може хтось, будь ласка, допоможе мені, як змусити вчасно виконати заплановане завдання. Також чому для одного коду завдання створюється кілька записів?
Оновлення
Я очистив всю таблицю, і у кроні було створено заплановані завдання. Усі завдання знаходяться в стані очікування і ніколи не виконуються, навіть очікуючи більше 60 хвилин. Щось не так у Magento 1.9.1
Оновлення 11/02: Сьогодні я зробив ще якийсь аналіз процесу.
Я редагував cron.php, як показано нижче
echo 'iam before mdefault 1';
shell_exec("/bin/sh $baseDir/cron.sh $fileName -mdefault 1 > /dev/null 2>&1 &");
echo 'iam before malways 1';
shell_exec("/bin/sh $baseDir/cron.sh $fileName -malways 1 > /dev/null 2>&1 &");
echo 'i returned success';
Я редагував клас Mage_Cron_Model_Observer, як показано нижче
public function dispatch($observer) {
echo 'iam inside dispath';
Я розумію, що коли cron запускає -mdefault, він повинен викликати функцію диспетчеризації, і виконання буде відбуватися. Але те, що сталося, було, як показано нижче, у виробництві кронів.
Content-type: text/html
iam before mdefault 1iam before malways 1i returned success
Це означає, що відправка не називається atall ...
Спробуйте ще один
Я вручну змінив змінну $isShellDisabled = true;
і змінив нижче в cron.php.
if ($isShellDisabled) {
echo 'before always';
Mage::dispatchEvent('always');
echo 'after always';
Mage::dispatchEvent('default');
echo 'after default';
} else {
Mage::dispatchEvent($cronMode);
}
Випуск крона для вищезазначеного наведений нижче
Content-type: text/html
before alwaysiam inside dispath alwaysafter always
Тепер він називає "dispatchAlways", але не "dispatch"
Жодна з відповідей мені не допомагає. Він ніколи не вибирає заплановані завдання. Тобто, коли Cron працює вперше, він успішно створив завдання в таблиці. Але він ніколи не виконує завдання.
*/5 * * * * /bin/sh PATH_TO_PRODUCTION/cron.sh
якщо такий є.
cron_schedule
стіл? Перевірте, чи не заповнюються нові завдання через годину або близько того