PHP-php获取shell命令执行时间
php怎么精确得到一个shell命令执行时间?如果超过一定时间限制,这条命令就终止执行。
就像php用下面的cgi方式执行。
php -f test.php 'mkdir -p {1..10000}dir/{1..1000}file'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
<?php
class runtime
{
var $StartTime = 0;
var $StopTime = 0;
function get_microtime()
{
list($usec, $sec) = explode(' ', microtime());
return ((float)$usec + (float)$sec);
}
function start()
{
$this->StartTime = $this->get_microtime();
}
function stop()
{
$this->StopTime = $this->get_microtime();
}
function spent()
{
return round(($this->StopTime - $this->StartTime) * 1000, 1);
}
}
//例子
$runtime= new runtime;
$runtime->start();
//你的代码开始
$a = 0;
for($i=0; $i<1000000; $i++)
{
$a += $i;
}
//你的代码结束
$runtime->stop();
echo "页面执行时间: ".$runtime->spent()." 毫秒";
?>
获取精确时间好办, microtime 就可以取到.
关键应该是达到一定时间后, 自动结束程序.
程序内部可以考虑这种
set_time_limit(2);
register_shutdown_function('get_error');
function get_error()
{
print_r(error_get_last());
}
echo 'do something';
sleep(5);
通过设置脚本超时时间, 可以间接做到程序运行一段时间后自动结束.
通过register_shutdown_function可以捕获到这个Fatal Error, 从而记录日志等后一步操作.
外部模式
通过创建一个PHP守护进程, 由此进程SHELL出其他的单任务PHP进程, 然后守护进程对SHELL出来的进程进行时间监控.
如每秒监控一次, 若此PHP在进程列表中存在则进程未结束, 当超出时间后可以KILL掉, 并记录日志等后一步操作.