Как я могу переписать это в cron, который будет работать каждый день дольше 30 секунд? Кроме того, мне нужно отредактировать файл .htaccess
или php.ini
в каталоге cron.php
чтобы что-то сказать? Над браузером он работает отлично дольше 30 секунд; над оболочкой он тоже работает отлично. Но как задание cron, оно умирает через 30 секунд. Я нахожусь на хостинге 1 и 1.
0 12 * * * php5 /this/is/the/file/cron.php
Есть несколько вещей, которые могли бы прекратить ваш скрипт. В файле php.ini может быть максимальное время выполнения. Если это так, вы можете переопределить его в своем скрипте с помощью set_time_limit(0);
где zero означает отсутствие ограничения, а любое число, большее нуля, – это количество секунд, за которое сценарий запускается до его завершения. Важно отметить, что на этот раз НЕ включается время, необходимое браузеру для выполнения запроса, поэтому время загрузки файла здесь не учитывается.
Если вы работаете в общедоступной среде хостинга (например, Dreamhost), у них есть часы процесса, которые убьют любой PHP-процесс после установленного срока. Вы не можете обойти их. Вам нужно будет связаться с хостинг-провайдером, чтобы узнать, что вам нужно сделать, чтобы получить доступ для запуска сценария дольше (для Dreamhost они хотят, чтобы у вас было предложение PS).
Используйте этот синтаксис для запуска php:
php -c /path/to/another/php.ini /this/is/the/file/cron.php
Затем вы можете указать другой тайм-аут (или отсутствие таймаута) в другом файле php.ini
.
ini_set('max_execution_time', 600);
Добавьте это в начало вашего php-файла, и он будет работать в течение 600 секунд. Ничего больше не рекомендуется, но вы можете пойти, если хотите.
Я бы просто использовал wget http://path.to.myscript.php
Если он умирает после 30, вам может потребоваться установить max_execution_time = 60
в php.ini
чтобы сценарий работал более 30 секунд.
Вы также можете использовать ini_set('max_execution_time', 60)
Но, как говорится на странице руководства, в некоторых случаях (т.е. работает в безопасном режиме) это не будет иметь никакого эффекта: http://uk.php.net/manual/en/info.configuration.php#ini.max-execution -время
Также возможно, что для php.ini для клиентской линии существуют разные максимальные значения выполнения, чем для браузера. Я видел это иногда.