我有一个已经运行了一周的PHP脚本,因为它正在进行大量的数字处理 - 它没有挂起,只是做了很多工作。问题是我不知道它到底在哪里,所以我不知道它是否会在1小时或1个月内完成。 (是的,我应该把东西放在那里告诉我,但现在已经太迟了。)
有什么方法可以找出脚本在做什么吗?或者更好的是,从当前状态中提取变量?
答案 0 :(得分:1)
在Windows上,您可以查看php.exe正在使用Microsoft procmon.exe执行的操作。 它不会给你关于变量等的完整反馈,但你可以检查任何文件系统操作(php经常这样做)。 PHP有一些内部函数存储为额外的.exe文件。如果PHP调用它们,你可以检查procmon ...
答案 1 :(得分:0)
我希望脚本现在已经完成了它的任务。作为一般指南,在Linux上,使用top命令检查系统上运行的进程发生了什么。它为您提供了一个运行所有进程的窗口 要专注于单个进程,您可以通过ps命令获取其PID(进程ID)。所以你可以运行:
$ ps -e
此命令将提供4列输出。左列是PID,右侧是脚本名称。假设您在右侧列中找到脚本名称,并检查其PID是否为3468.然后运行
$ top -p 3468
您将获得定期更新的顶部窗口。您可以在那里选择不同类型的信息。通常先检查%CPU和VIRT。 VIRT列很有用,因为如果它不断增加,它几乎就是脚本内存泄漏的明显标志。
或者,您可以使用htop并突出显示您选择的过程(如果已在系统上安装它)。
答案 2 :(得分:0)
已经建议的答案..只是表明脚本正在运行..正如您已经说过的那样,不是您需要的......
至于已经运行的脚本没有记录/存储任何信息..那么你能想到的唯一真正的选择是检查它正在处理什么..所以如果它正在处理文件/数据库..您应该能够看到更改/修改的结果。
如果它纯粹全部记忆中,除非你碰巧使用类似会话之类的东西,否则你或多或少都会失败。
但只是检查脚本是否正在运行......根本没有帮助..,所以如果它处理数据库,检查数据库,如果它的处理文件,检查文件..否则你的运气不好。
当涉及到重型cruncher脚本时,例如当我进行地理编码时......我将结果/已处理数据存储在本地文件中..所以如果脚本失败或停止......我可以恢复..但是好处这是我可以运行另一个脚本并读取这些文件,并查看进度或最后一步。
这可以恢复或重新开始吗?如果它可以恢复,停止它并让它记录或东西,以便你可以监控它?否则你只需等待它完成。
答案 3 :(得分:-1)
我编写了一些需要很长时间才能运行的PHP脚本。通常我有脚本更新一个数据库表偶尔会有一些统计数据(例如:如果在一个循环中,每10000个循环,取决于循环的重量...也需要采用microtime样本来查看特定步骤需要多长时间)。然后,我可以在表格中查看“统计信息”,以查看脚本的执行情况,或者它的具体步骤。
我同意其他人所说的关于PHP不是最好的语言,但是我发现这种方法效果很好(我已经让PHP脚本稳定运行了几个月)。