如何回应'。 '在你的应用程序运行时每3秒钟?

时间:2015-02-13 15:48:57

标签: php

我在CLI中运行我的PHP。 我的脚本可能需要大约3-4分钟才能完成。 在查看CLI时,我看到的只有:

enter image description here

这对我没什么帮助,我不确定我的应用程序是否卡住或仍在运行。 (目视)

跟踪它的最佳方法是什么? 我想回应“。”在我的应用程序运行时每3秒钟。

基本上,我想在我的脚本加载/运行时给自己一些视觉反馈。

如果您建议我记录它:
我实际上记录了我的$响应并将其输出到我桌面上的某个文件中,我之所以要问这个问题,我只是想创建一个视觉反馈 - 就像你在玩视频游戏时和等待某事要完成加载,您会看到屏幕上显示Now loading ........或类似的内容 - 我是对的吗?

是的 - 我想做类似的事情!

5 个答案:

答案 0 :(得分:1)

为什么不让程序在运行时编写日志文件。像这样,你可以记录每一个动作,你感兴趣的每一个细节。并观察文件中的进度,让程序做它应该做的事情。

一个很好的工具是monolog,这样可以在出错或成功的情况下轻松登录。

正如我刚读完你的评论一样,让它记录动作......

答案 1 :(得分:1)

PHP本质上是同步的,它不会移动到下一行,直到返回上一个命令。

您可以通过在后台shell中使用线程(pthreads)或运行命令来异步使用它。

<强>更新 由于您在评论中说明:&#34;在1 jSON&#34;中发布约30,000个对象。我假设这些都在循环中?为什么不这样做呢?

$time = time();
for {
    # post object here
    if (time()-$time >= 3) {
        echo '.';
        $time = time();
    }
}

非常简单的解决方案。不会每3秒输出一次,但它应该足以满足您的目的(只是确保事情正在进行中)。

答案 2 :(得分:1)

我认为你可以像控制点一样......每次你完成任务时你都可以echo ...如果你正在做循环,你可以echo每个新循环如果循环不是这样的话大。

这样你就知道你在什么方面的任务。我想你明白了,你也应该检查你的变量以获得预期的类型。这样,任何函数都不应该有任何错误。

答案 3 :(得分:0)

可以使用register_tick_function()在执行期间执行回调 - 只记录自上次输出任何内容以来的时间,并在该内容过期时发送更多输出。

但实际上,最好设计一个应用程序,从一开始就提供反馈或记录。但是知道register_tick_function可用是很好的!

答案 4 :(得分:0)

我不是每隔3秒回复一次“。”,而是“回声”。在每行代码之后。

现在 - 我得到了这个结果 - 足够接近我想要的东西。

enter image description here