如何确定 php 文件在终止之前运行了多长时间?

如何确定 php 文件在终止之前运行了多长时间?

我们有一个长期运行的 php 文件,可以在系统管理员需要时启动和终止。

我如何确定每次运行 php 文件时运行了多长时间?

我什么也没看到

cat /var/log/message | grep filename

答案1

最简单的解决方案是让脚本捕获终止信号 ( SIGTERM/ SIGINT),然后计算并保存(或显示)退出前的已用时间。除非出现错误,否则脚本不太可能出现在任何日志中(尤其是当您从 CLI 运行它时)。类似下面的操作应该可以做到:

<?php
$time_start = microtime(true);
declare(ticks = 1);

pcntl_signal(SIGTERM, "signal_handler");
pcntl_signal(SIGINT, "signal_handler");

function signal_handler($signal) {
    global $time_start;
    switch($signal) {
        case SIGTERM:
        case SIGINT:
            file_put_contents("runtime.txt", microtime(true) - $time_start);
            exit;
    }
}

//your script functions go here

?>

只要你不终止你的脚本SIGKILL,上面的方法就可以正常工作(例如,如果你使用、甚至终止Ctrl+Ckill只会killallkill -9脚本无法捕获信号)。[已在 RHEL/CentOS 上使用 PHP-5.3.8 进行测试并运行]

相关内容