PHP exec()和运行shell脚本给出了不同的结果

时间:2016-01-22 16:47:23

标签: php bash shell

我有script.sh向某个网址发送请求并使用whet打印执行时间。这是源代码:

time wget http://some.url

当我从命令行运行它时,我看到时间结果,精确到3位小数:

real    0m0.584s
user    0m0.000s
sys     0m0.002s

但是,当我使用PHP函数exec("script.sh", $output)运行此SH时,我看到时间结果的精度只有2位小数:

0.00user 0.00system 0:00.32elapsed 0%CPU (0avgtext+0avgdata 3788maxresident)k

如何在命令行中看到相同的结果?

1 个答案:

答案 0 :(得分:2)

答案是in the manual

  

注意:某些shell(例如bash(1))具有内置时间命令,该命令提供的功能少于此处描述的命令。要访问实际命令,您可能需要指定其路径名(类似于/ usr / bin / time)。

你从内置bash获得了更高的精确度;如果你从shell运行/usr/bin/time,你也会看到两个小数位。

不幸的是,time是一种特殊情况,因为它是一个关键字而不是内置命令。否则,可以使用bash的builtin命令来强制它。

所以看起来你会被困在两个小数位,除非你想尝试不同的方法:

start_time=`date +%s%N`
wget http://some.url
end_time=`date +%s%N`
bc -l <<< "scale=4;($end_time - $start_time) / 1000000000"