Непрерывная работа скрипта на web-сервере

270
25 июня 2017, 16:52

Такая задача, нужно заставить отрабатывать один скрипт на сайте через определенное время, желательно чтобы это был js, либо чтобы это был php который запускает код js. Как правильно реализовать? Хочу чтобы скрипт отрабатывал каждый час. Подчеркиваю, важно чтобы js скрипт не был зависим от страницы с которой его запустили. Логика такая, со страницы запускается php, которому должно быть все равно на сайте пользователь, который запустил код или нет. Скрипт к примеру постоянно должен пинговать один домен и ложит все это в логи. Как заставить php работать постоянно? Чтобы я зашел на страницу настроек скрипта, поставил интервал, запустил его и забыл, а он работает.

Я правильно понимаю что просто закинуть все в while(true) не поможет?

Answer 1

Допустим так:

set_time_limit(0); // неограниченное время выполнения скрипта
ignore_user_abort(true);
function task() {
  // Код задачи
}
while (true) {
  task();
  $delay = file_get_contents('delay.cfg'); // период повтора в секундах
  sleep($delay);
}

Админка должна редактировать файл delay.cfg

Нужно реализовать защиту от многократного запуска скрипта, на семафорах или в файл писать таймстемп последней итерации, если прошло слишком много времени - разрешать повторный запуск.

Хостер имеет возможность ограничивать максимальное время работы скриптов.

READ ALSO
Конвертация json строки в js объект

Конвертация json строки в js объект

В php файле есть массив который передается так:echo json_encode($new_content);Его принимает функция, заданная при успешном выполнении AJAX запроса

325
Как узнать время жизни csrf токена в laravel 5.2?

Как узнать время жизни csrf токена в laravel 5.2?

One page application, все на аяксе, возникает проблема что если страница долго открыта и без действий токен протухает и user не может понять что случилось,...

341
Настройка сервера через vnc

Настройка сервера через vnc

Хостинг предоставил ssh и vnc все рутовое

288
вопрос про оптимизацию mysql + php

вопрос про оптимизацию mysql + php

здравствуйте, на сайте есть система рангов, чем больше у тебя баллов, тем выше ранг

237