2013-02-22 61 views
4

我有一个PHP脚本已经运行了一个星期,因为它正在做大量的数字处理 - 它没有挂起,只是做了很多工作。问题是我不知道它在哪里,所以我不知道它会在1小时还是1个月内完成。 (是的,我应该把东西放在那里,以便告诉我,但现在已经太晚了。)是否有可能检查PHP脚本在运行时正在做什么?

有没有什么办法可以找出脚本在做什么?或者甚至更好,从当前状态中提取变量?

+3

“数字处理”“PHP”和“已经运行了一周”并没有让我感觉良好。 – 2013-02-22 07:55:49

+1

它是否正在执行您可以查找的任何文件写入/数据库写入? – webnoob 2013-02-22 07:55:54

+0

我同意:任何其他语言本来会更好,但我在PHP中编程得最好......所以它才有意义。整体节省时间。 – Alasdair 2013-02-22 07:56:42

回答

0

在Windows上,您可以检查php.exe在与微软的procmon.exe做什么。 它不会给你一个关于变量等的完整反馈,但你可以检查任何文件系统操作(php经常使用)。 PHP有一些内部函数存储为额外的.exe文件。你可以检查与procmon如果PHP的电话是他们...

+0

行。我在Linux CentOS 6上。有什么事吗? – Alasdair 2013-02-22 08:06:18

0

我希望脚本已完成其任务,现在。作为一般指南,在Linux上,使用top命令检查系统上运行的进程的情况。它为您提供了所有正在运行的进程的窗口。
要专注于单个进程,您可以通过ps命令获取其PID(进程ID)。所以,你可以运行:

$ ps的-e

这个命令将给出一个4列输出。左栏是PID,右栏是脚本名称。假设你在右栏找到脚本名称,你检查它的PID是3468.然后运行

$顶部-p 3468

你得到定期更新顶部窗口。您可以在那里选择不同类型的信息。通常你首先检查%CPU和VIRT。 VIRT列非常有用,因为如果它不断增加,那么脚本中的内存泄漏几乎就是一个明确的标志。
或者,您可以使用htop并突出显示您选择的过程,如果您已将它安装在系统上。

0

我写了一些需要很长时间才能运行的PHP脚本。通常情况下,脚本会使用一些统计数据偶尔更新数据库表(例如:如果在循环中,每循环10000次,具体取决于循环的权重......也可以通过microtime的样本来了解特定步骤需要多长时间)。然后,我可以查看表格中的“统计信息”,查看脚本如何执行,或者执行了哪些步骤。我很同意其他人对PHP的看法,但并不是最好的语言,但是我发现这种方法运行良好(我的PHP脚本运行稳定了好几个月)。

0

已经参考答案..只需出示一个脚本运行。这是你已经说过是不是你需要......

对于已经运行不记录/存储任何信息的脚本。 。那么,我能想到的唯一真正的选择是检查它正在处​​理什么。所以,如果它正在处理文件/数据库..你应该能够看到更改/修改的结果。

如果它纯粹是所有的记忆,你或多或少会失去运气,除非你碰巧使用了类似会话的东西。

但简单地检查脚本是否正在运行...根本没有任何帮助..因此,如果它处理数据库,检查数据库,如果它的处理文件,检查文件..否则你的运气不好。

当谈到重型cruncher脚本,例如,当我做地理编码...我将结果/处理的数据存储在本地文件..所以,如果脚本失败或停止..我可以恢复..但这样做的好处是我可以运行另一个脚本并阅读这些文件并查看进度或最后执行的步骤。

这可以恢复或重新开始吗?如果它可以恢复,停下来,让它登录或什么东西,所以你可以监控它?否则,你只需要等待它完成。

相关问题