Вечный цикл + cron реально?

238
28 марта 2017, 14:45

Всем добрый вечер. Запускаю скрипт через cron каждую минуту. За эту минуту нужно сделать несколько операций с разрывом в 10 сек.

Делаю это так

set_time_limit(60);
while(true) {
echo "Test";
sleep(10);
echo "Test";
}

Но почему то сообщение выводиться только 1 раз. Что делаю не так?

Answer 1

Нужно понимать, что set_time_limit относится не к реальному времени, а к времени работы самого php. sleep и другие операции ввода-вывода не считаются.

Предлагаю более точный подход:

$start = microtime(true); // засекаем время начала
do {
  doSomething(); // вызов вашей функции
  sleep(10);
} while (microtime(true) - $start < 60); // прошла ли минута?

В остальном, нужно дебажить скрипт в отрыве от крона, корректно обрабатывать ошибки - возможно сервисы, к которым вы обращаетесь, ограничивают рейт обращений.

Запуск крона каждые 15 секунд:

* * * * * your_script
* * * * * sleep 15; your_script
* * * * * sleep 30; your_script
* * * * * sleep 45; your_script
READ ALSO
Роуты для регистрации. Laravel 5.4

Роуты для регистрации. Laravel 5.4

Как должны выглядеть маршруты для регистрации:

395
Загрузка файла на локальный сервер с помощью PHP

Загрузка файла на локальный сервер с помощью PHP

Только изучаю PHP, не судите стого :) Сделал простую форму:

296
Как поставить пробел внутри PHP кода?

Как поставить пробел внутри PHP кода?

Добрый день, есть сайт на wordpressИспользуется php код цен, надо было поменять местами цифры и символ валюты, но в итоге убрались пробелы

356
Zend переход с 1 на 2 версию

Zend переход с 1 на 2 версию

Привет, уже сто лет пользуюсь Zend v1, и сейчас стоит вопрос - надо ли переходить на новый фреймворк, ведь Zend v1 уже не имеет полной поддержкиНачал...

283