Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
setInterval函数的PHP等价物_Php_Asynchronous - Fatal编程技术网

setInterval函数的PHP等价物

setInterval函数的PHP等价物,php,asynchronous,Php,Asynchronous,我有一个长时间运行的PHP脚本,看起来像这样: $myClass->myFunction('this takes 30 minutes to run'); 在运行myFunction()期间,我希望每30秒发送一次心跳信号,以提醒我的应用程序脚本仍在运行且没有失败 在JavaScript中,我可以通过setInterval()实现这一点。我希望能够在PHP中做同样的事情。可能有一个自定义的setInterval()函数,看起来像: setInterval(function(){

我有一个长时间运行的PHP脚本,看起来像这样:

$myClass->myFunction('this takes 30 minutes to run');
在运行
myFunction()
期间,我希望每30秒发送一次心跳信号,以提醒我的应用程序脚本仍在运行且没有失败

在JavaScript中,我可以通过
setInterval()
实现这一点。我希望能够在PHP中做同样的事情。可能有一个自定义的
setInterval()
函数,看起来像:

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

考虑到PHP的同步特性,这可能吗

没有任何简单的方法可以做到这一点,但由于您有一个长期运行的php脚本,假设您有一个主循环,您可以这样做:

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

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

使用考虑到javascript是单线程的,您无法真正使用它。请不要使用
sleep()
。。这暂停了整个脚本。@Barmar:good sh*t。我一直在寻找这个例子,但它永远不会执行脚本中的其余代码,它只会卡在这个循环中。