PHP:如何编写一个消息显示在'命令


PHP: How to write a message to show up in 'ps' command?

如果我编写一个带有sleep语句的Bash shell程序,我可以执行以下操作来检查它的状态:

ps aux | grep sleep

如果我有一个睡眠发生了很长一段时间,比如在PHP中10分钟,试图看看网络连接现在是可用的,我不能确定是程序有问题,还是它正确执行睡眠函数。

我正在考虑的一种方法是将睡眠状态与时间戳写入日志文件。但是我想知道是否有可能和实际能够写这个状态,所以它会显示做一个'ps aux | grep sleep',这个php编程正在运行的时刻处于睡眠状态。

或者是否有更好的方法和途径?谢谢!

也许创建一个sleep-php.sh然后用bash命令执行它,我认为它是source sleep-php.sh。然后,可以用grep命令调用sleep-php.sh,而不会把它与碰巧运行的另一个睡眠命令混淆。

你甚至可以更进一步,动态创建"sleep-php-$id.sh",这样你就可以在sleep中包含更多的信息,这里以am id为例。

依我之见,最好的方法不是将跟踪器/记录器放在较低的操作系统级别,而是放在PHP本身。

我的建议是编写一个PHP循环,尝试次数有限,尝试之间的等待时间较短,这样您就可以记录每个循环,以及每个循环的网络连接轮询结果。一旦获得了连接网络,就脱离这个循环。如果循环完成,并且没有获得网络访问权限,则发出相关消息/业务操作。

define("MAX_ATTEMPT_COUNT", 10);
define("WAITING_TIME", 60);
$NetworkAccess = false;
$fd = fopen("netpoll.log", 'a');
if (!$fd) die("I thought I could open netpoll.log but I can't.");
for($i=1; $i<=MAX_ATTEMPT_COUNT; $i++) {
    fwrite($fd, "Entering loop #" . $i);
    $NetworkAccess |= pollNetwork(); // can be |= or simply =
    if ($NetworkAccess) {
        fwrite($fd, "network access acquired, exiting loop.");
        break;
    }
    fwrite($fd, "No cigar, I'll try again in " . WAITING_TIME . " seconds.");
    sleep(WAITING_TIME);
} 
if(!$NetworkAccess) {
    fwrite($fd, "No network access after " . MAX_ATTEMPT_COUNT*WAITING_TIME . " seconds, giving up.");
}
fclose($fd);