我怎样才能延迟我的函数的某个部分,完成我的函数,然后回到我延迟的部分?

How can I delay a certain portion of my function, finish my function, and then go back to the part I delayed?

提问人:hden 提问时间:7/30/2015 更新时间:7/30/2015 访问量:97

问:

我有一个函数,我想在中间延迟某个调用,但我不想停止整个函数。即使在最后一行之后,我也希望我延迟的部分在指定时间后运行。下面是我的意思的一个例子:

 function delayInMiddle()
    {
    function call 1
    if(some condition met in 30 seconds)
            {function call 2}
    function call 3
    }

我想调用函数 1,检查函数 2,继续函数调用 3,然后在 30 秒内返回并执行函数调用 2。 这在 php 中可能吗?

PHP 延时

评论

0赞 RiggsFolly 7/30/2015
答案取决于您要延迟的过程实际执行的操作。您能告诉我们至少从广义上讲将做什么吗?这是网页还是批处理脚本?function call 2
0赞 Tarun Upadhyay 7/30/2015
您可以在调用函数 2 之前休眠 30 秒,或者如果这不能解决您的问题,您能否多解释一下您尝试用这种逻辑做什么,以便我们以更好的方式为您提供帮助。
0赞 hden 7/30/2015
函数调用 2 应该是 twitter 上的帖子。我没有发布任何传递到函数中的内容,只是一些一般文本。如果我在最后调用函数 2,由于函数 3 的性质,它不会被执行。

答:

-1赞 Disha V. 7/30/2015 #1

您可以使用延迟。http://php.net/manual/en/function.sleep.phpsleep()

评论

0赞 hden 7/30/2015
不过,这不会暂停整个功能吗?我想完成整个函数,最后才回到延迟调用。
0赞 RiggsFolly 7/30/2015
是的,它将暂停整个过程。
0赞 hden 7/30/2015
是否存在不会暂停整个过程的东西?在过去的半个小时里,我一直在谷歌上搜索,但无济于事。
0赞 Disha V. 7/30/2015
哦,好吧,我误解了这个问题,你可以用它来。goto
0赞 RiggsFolly 7/30/2015
转到你真的这么说了吗?看来你误解了过去 30 年
0赞 RiggsFolly 7/30/2015 #2

作为一个可能的解决方案,怎么样。

不要在该脚本中调用 function2,而是将相关数据写入作为队列操作的表 + 一个时间,在此之前它不应该处理此队列项,这会产生 x 秒延迟。

然后使函数 2 成为每 30 秒运行一次的 cron 作业。它查看队列,看看它有什么要做的。

foreach ( row in queue ) {
     send twitter;
     delete row from table;
}
exit;