我们有一个长期运行的 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+C
;kill
只会killall
让kill -9
脚本无法捕获信号)。[已在 RHEL/CentOS 上使用 PHP-5.3.8 进行测试并运行]