我有对象服务器这样的数组:PHP运行多个脚本同时
Array
(
[0](
(
[id] => 1
[version] => 1
[server_addr] => 192.168.5.210
[server_name] => server1
)
)
[1](
(
[id] => 2
[server_addr] => 192.168.5.211
[server_name] => server2
)
)
)
通过运行下面的代码,我能够获得所需的输出
foreach ($model as $server) {
$cpu_usage = shell_exec('sudo path/to/total_cpu_usage.sh '.$server->server_addr);
$memory_usage = shell_exec('sudo path/to/total_memory_usage.sh '.$server->server_addr);
$disk_space = shell_exec('sudo path/to/disk_space.sh '.$server->server_addr);
$inode_space = shell_exec('sudo path/to/inode_space.sh '.$server->server_addr);
$network = shell_exec('sudo path/to/network.sh '.$server->server_addr);
exec('sudo path/to/process.sh '.$server->server_addr, $processString);
$processArray = array();
foreach ($processString as $i) {
$row = explode(" ", preg_replace('/\s+/', ' ', $i));
array_push($processArray,$row);
}
$datetime = shell_exec('sudo path/to/datetime.sh '.$server->server_addr);
echo $cpu_usage;
echo $mem_usage;
echo $disk_space;
......
}
我的脚本类似于:
#!/bin/bash
if [ "$1" == "" ]
then
echo "To start monitor, please provide the server ip:"
read IP
else
IP=$1
fi
ssh [email protected]$IP "date"
但整个过程花费的时间为5秒,而服务器的花费时间为10秒比2秒。这是为什么?无论如何减少时间?我的猜测是exec命令正在等待输出被分配给变量,然后再进入下一个循环?我试图谷歌一点点,但大部分的答案是没有返回任何输出...我需要的输出虽然
start_time = 2016-12-23T17:42:50,end_time = 2016-12-23T17:43:01。大约11秒为5个循环,第一个循环在42:51结束大约1 ++秒 –