Почему мой запуск Cron завершится неудачей при запуске системным crontab, но завершится успешно при запуске вручную?


Задачи Cron на моем веб-сайте выполняются отлично, если я вручную выполняю cron. Тем не менее, у меня есть сервер, настроенный на автоматический запуск cron каждый час. Когда cron выполняется автоматически, он завершается неудачей... каждый раз. Сообщение об ошибке всегда связано с использованием памяти, превышающим допустимые уровни (которые уже довольно высоки). В большинстве случаев, хотя и не всегда, эта ошибка возникает из модуля Даты. У меня есть настроенный канал, который извлекается из большого календаря Google, так что Я думал, что в этом может быть проблема. Но почему он будет успешным при запуске вручную? Я понимаю, что при запуске вручную он запускается от имени моего администратора, а при автоматическом запуске он запускается (поправьте меня, если я ошибаюсь) как анонимный пользователь. Имеет ли это какое-то отношение к модели неудачи/успеха?


Изменить: Публикация фактической команды cron в соответствии с запросом

/bin/php5 -q /path/to/my/account/public_html/cron.php

 2
Author: kiamlaluno, 2011-07-01

4 answers

Проверьте, загружается ли у вас файл php-cli.ini. В командной строке выполните:

$ php -i |grep ini

И посмотрите, какой ini-файл загружается. Если загружается cli ini, у него может быть не такой же лимит памяти, как у вашего "обычного" php.ini.

 3
Author: Entendu, 2011-07-01 19:33:00

Я повторяю попытку drush. У меня была в основном та же проблема - я мог запустить cron вручную, но не мог заставить работать curl, wget, lynx или любой другой вариант crontab. Я попробовал drush cron, и это сработало, так что... Я вставил это в кронтаб:

45 * * * * / путь usr/bin/env=/usr/локальный/sbin:/usr/локальный/bin:/usr/sbin:/usr/bin:/sbin:/столбцы bin=72/usr/bin/drush--root=/путь/к/вашему/drupal/корню--uri=yoursite.com --тихий крон

Работает на меня. Спас мой рассудок.

 1
Author: chriscaple, 2011-07-17 13:01:31

В зависимости от того, что пытается сделать ваш cron, вам может потребоваться указать, что он запускается от имени администратора, а не анонимно: drush -u 1 cron.

 0
Author: tim.plunkett, 2011-07-26 00:58:57

@Entendu был прав, он использовал файл .ini, отличный от того, который использовал фактический сайт. Поэтому, когда я запустил cron вручную, он использовал файл .ini с более высоким лимитом памяти, чем файл CLI.ini. Чтобы решить эту проблему, вы можете отредактировать файл .ini для интерфейса командной строки. Или, если у вас нет доступа к нему, вы можете указать, что cron должен использовать другой файл .ini, используя флаг -c... /bin/php5 -c /path/to/your/php.ini /path/to/your/cron.php

 0
Author: Chaulky, 2011-07-26 02:03:38