Как организовать циклическое выполнение скрипта в течение установленного времени?

Имеется грубо говоря, подобный скрипт Мне нужно, чтобы он выполнялся 3 минуты ровно.

while(true){

  "тело скрипта"

  sleep(10);
}

Данный скрипт находится на хостинге. Из документации PHP мы знаем:

max_execution_time

set_time_limit()

Не включает в ограничение Sleep, System, запросы http.

Если я поставлю лимиты на свой скрипт

max_execution_time 300;
set_time_limit(300);

От этого скрипт не будет выполняться 3 минуты, т.к. в команде есть Sleep();

Server: nginx

Но я не могу изменить настройки ngnix на хостинге

Я подумал, а вдруг можно запустить через ajax, установив timeout

 $.ajax({
    url: "https://url.con/ajax/test.php", // куда отправляем запрос
    error: function(){
        // будет вызвана в случае если пройдет 3 секунды, но ответа так и не было
      alert('no');
    },
    success: function(){
        // что-то делаем тут 
       alert('good');
    },
    timeout: 3000 // установка 3-х секундного тайм-аута
});

Но при выходе тайм аута, скрипт продолжает выполняться.

Что же делать в таком случае?

задача будет запускаться через Cron


Ответы (1 шт):

Автор решения: Владимир Клыков
$start = time();
$max_exec_time = 300;
while(true){

"тело скрипта"

  if(time()-$start>=$max_exec_time) break; else sleep(10);
}
→ Ссылка