@Jamy_Iler

Как грамотно организовать вызов скрипта каждые N секунд?

Есть скрипт, задача которого раз в N секунд получать новые сообщения на странице ВК методом getDialogs.

На моём сервере cron отсутствует, поэтому я пользуюсь внешними сайтами, один из них cron-job.org. Вызываю вот этот свой скрипт раз в минуту.

set_time_limit(59);
require_once("start_func.php");

//ждём когда последний запущенный скрипт закончит работу
$time_shift = 0;
while(file_get_contents("cron.txt")!=0 & $time_shift<59)
{
	sleep(1);
	$time_shift++;
}

//говорим всем о том что запускаем скрипт
file_put_contents("cron.txt", 1);
$interval = 3;
$start_time = time();

//выполняем скрипт $i раз
while($time_shift<57 & time()-$start_time<57)
{
	start_func(); //Делаем запрос к ВК АПИ
	sleep($interval);
}

//говорим всем о том, что текущий скрипт закончил выполнение
file_put_contents("cron.txt", 0);


Часто при выполнении запросов к ВК случаются непонятные задержки на 10-180 секунд и сайт, который вызывал скрипт присылает мне на почту письмо с ошибкой. После 100 ошибок прекращает вызывать мой скрипт. Ошибка: превышение времени выполнения (увеличивать время ожидания ответа на cron-job не хочется).

Как мне построить алгоритм так, чтобы время его выполнения не превышало 60 секунд и функция запроса вызывалась раз в N секунд?
  • Вопрос задан
  • 426 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
while(file_get_contents("cron.txt")!=0 & $time_shift<59)
...
while($time_shift<57 & time()-$start_time<57)

Скорее всего, дело в том, что вы в условии амперсанд забыли - их должно быть два.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
Можно вот таким способом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы