2015-03-30 5 views
0

У меня есть длинный работает PHP скрипт, который выглядит примерно так:PHP эквивалент setInterval функции

$myClass->myFunction('this takes 30 minutes to run'); 

Я хочу, чтобы послать пульс каждые 30 секунд во время выполнения myFunction(), чтобы предупредить мое заявление о том, что скрипт все еще работает и не подведет.

В JavaScript я могу достичь этого с помощью setInterval(). Я хочу иметь возможность делать то же самое в PHP. Возможно, с помощью пользовательского setInterval() функции, которая выглядит как:

setInterval(function(){ 
    $myClass->addHeartbeat("still running");  
}, 30000); 

ли это возможно, учитывая синхронный характер PHP?

+0

Используйте [ 'сна()' ] (http://php.net/manual/en/function.sleep.php) –

+0

Вы не можете сделать это с помощью javascript, рассматривая его как однопоточное. – Cthulhu

+0

не использовать 'sleep()' .., который останавливает весь скрипт. –

ответ

-1

Там разве любой простой способ сделать это, но так как у вас есть PHP скрипт долго работает вы можете сделать что-то вроде этого, если у вас есть основной цикл .:

while($running) { // long running main loop 

    if(time() % 30 == 0) { 
     $myClass->addHeartbeat("still running"); 
    } 
    // your long running phpscript code 
} 
+4

Но это никогда не выполнит остальную часть кода в скрипте, оно просто застрянет в этом цикле. – Barmar

+0

Я немного уточнил –

Смежные вопросы