Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以检查PHP脚本在';它已经在运行了?_Php - Fatal编程技术网

是否可以检查PHP脚本在';它已经在运行了?

是否可以检查PHP脚本在';它已经在运行了?,php,Php,我有一个PHP脚本已经运行了一周,因为它做了大量的数字运算——它没有挂起,只是做了大量的工作。问题是,我不知道它到哪里去了,所以我不知道它会在1小时或1个月内完成。(是的,我应该在里面放点东西,让它告诉我,但现在已经太迟了。) 有没有办法让我知道剧本在做什么?或者更好的方法是,从当前状态提取变量?在Windows上,您可以检查php.exe在使用Microsoft的。 它不会提供关于变量等的完整反馈,但您可以检查任何文件系统操作(php经常这样做)。PHP有一些存储为extra.exe的内部函数

我有一个PHP脚本已经运行了一周,因为它做了大量的数字运算——它没有挂起,只是做了大量的工作。问题是,我不知道它到哪里去了,所以我不知道它会在1小时或1个月内完成。(是的,我应该在里面放点东西,让它告诉我,但现在已经太迟了。)


有没有办法让我知道剧本在做什么?或者更好的方法是,从当前状态提取变量?

在Windows上,您可以检查php.exe在使用Microsoft的。
它不会提供关于变量等的完整反馈,但您可以检查任何文件系统操作(php经常这样做)。PHP有一些存储为extra.exe的内部函数。您可以使用procmon检查PHP是否调用了它们…

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

$ps-e

此命令将提供4列输出。左侧列是PID,右侧列是脚本名称。假设您在右边的列中找到脚本名称,并检查其PID是否为3468。然后跑

$top-第3468页

您将获得定期更新的顶部窗口。你可以在那里选择不同类型的信息。通常先检查%CPU和VIRT。VIRT列很有用,因为如果它不断增加,则几乎可以肯定它是脚本内存泄漏的迹象。

或者,如果您的系统上安装了htop,您可以使用htop并突出显示您选择的流程。

我编写了一些PHP脚本,这些脚本需要很长时间才能运行。通常,我会让脚本偶尔用一些统计数据更新数据库表(例如:如果在循环中,则每10000个循环,取决于循环的重量…还采集microtime样本以查看特定步骤所需的时间)。然后,我可以检查表中的“统计信息”,以查看脚本的执行情况,或者它所执行的特定步骤


我同意其他人关于PHP不是最好的语言的说法,但在紧要关头,我发现这种方法工作得很好(我已经让PHP脚本稳定运行了几个月)。

已经建议的答案。。只需显示脚本正在运行。。正如你所说的,这不是你的需要

对于已在运行但未记录/存储任何信息的脚本。。我能想到的唯一正确的选择是检查它正在处理什么。。因此,如果它正在处理文件/数据库。。您应该能够看到更改/修改的结果

如果这一切都是在记忆中,那么除非你碰巧使用了会话之类的东西,否则你或多或少都是运气不佳

但只需检查脚本是否正在运行。。。没有任何帮助..,因此如果它正在处理数据库,请检查数据库,如果它正在处理文件,请检查文件。。否则你就倒霉了

当涉及到繁重的cruncher脚本时,例如当我进行地理编码时。。。我将结果/处理后的数据存储在本地文件中。。因此,如果脚本失败或停止。。我可以继续。。但这样做的好处是我可以运行另一个脚本并读取这些文件,并查看执行的进度或最后一步


这可以继续吗?还是会重新开始?如果它可以恢复,停止它,让它记录下来或者做些什么,这样你就可以监视它了?否则,你只能等待它完成。

数字运算、“PHP”和“已经运行了一周”让我感觉不好。它是否正在进行任何你可以寻找的文件写入/数据库写入?我同意:任何其他语言都会更好,但我用PHP编写的程序最好。。。所以这是有道理的。总的来说节省了时间。“我不知道它是否会在1小时或1个月内完成……我希望不会花那么长时间”-OW如果您的操作系统支持此功能,
strace
dtrace
是您的朋友。好的。我在Linux CentOS 6上。有什么事吗?