У меня есть задача в cron: каждые 3 часа запускать php скрипт.
Я также пытался использовать WGET и PHP, но у меня возникла та же проблема. Иногда скрипт работает более 2 минут, но в основном 30 секунд. И если время выполнения больше 60 секунд, оно сбрасывается (504 пути) и cron запускает этот скрипт снова. И потом снова и снова. Фатальная перегрузка через несколько часов.
Я пробовал это с огромным количеством другого синтаксиса, но не получилось:
php -q /var/www/webmy/data/www/website.com/news.php
/ usr / bin / wget -O — -q -t 1 http://website.com/news.php
Как я могу управлять командой только с 1 попыткой запустить мой скрипт? Мне не нужно, чтобы он запускался миллион раз за каждые 60 секунд. Какие-нибудь ограничения?
Может быть, я могу ограничить / уменьшить время выполнения до 20 секунд, чтобы предотвратить запуск любого неподходящего сценария. Мне просто нужно запустить скрипт, мне не нужна система, чтобы ждать в любое время, скрипт каким-либо образом завершает задачу.
Вы можете установить максимальное время выполнения прямо в скрипте php с помощью set_time_limit ( int $seconds );
узнать больше Вот
Прежде всего, wget
предложение плохое. Если вы собираетесь использовать скрипт PHP для задачи cron, лучше запустить его как скрипт командной строки, запустив его напрямую и не через веб-сервер.
Предполагая, что вы не полагаетесь на информацию о сервере или переменные GET / POST в вашем скрипте: вы пробовали запустить его один раз вручную? Что-то странное происходит, когда вы это делаете?
Простая запись в crontab, подобная приведенной ниже, будет запускать ваш скрипт только раз в три часа:
* */3 * * * php /path/to/script.php
Если вы хотите гарантированно избежать одновременного запуска двух скриптов, вам следует использовать какую-то блокировку, например, простейшая блокировка файла с стадо