PHP-php获取shell命令执行时间

发布于 2016-11-19 05:13:55 字数 134 浏览 1374 评论 2

php怎么精确得到一个shell命令执行时间?如果超过一定时间限制,这条命令就终止执行。
就像php用下面的cgi方式执行。
php -f test.php 'mkdir -p {1..10000}dir/{1..1000}file'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

偏爱自由 2017-02-23 05:10:03

<?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()." 毫秒";
?>

瑾兮 2017-01-10 14:33:38

获取精确时间好办, 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掉, 并记录日志等后一步操作.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文