我在CLI中运行我的PHP。 我的脚本可能需要大约3-4分钟才能完成。 在查看CLI时,我看到的只有:
这对我没什么帮助,我不确定我的应用程序是否卡住或仍在运行。 (目视)
跟踪它的最佳方法是什么? 我想回应“。”在我的应用程序运行时每3秒钟。
基本上,我想在我的脚本加载/运行时给自己一些视觉反馈。
如果您建议我记录它:
我实际上记录了我的$响应并将其输出到我桌面上的某个文件中,我之所以要问这个问题,我只是想创建一个视觉反馈 - 就像你在玩视频游戏时和等待某事要完成加载,您会看到屏幕上显示Now loading ........
或类似的内容 - 我是对的吗?
是的 - 我想做类似的事情!
答案 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秒回复一次“。”,而是“回声”。在每行代码之后。
现在 - 我得到了这个结果 - 足够接近我想要的东西。