Tôi có một mảng với máy chủ đối tượng như thế này:PHP chạy nhiều kịch bản kiêm
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
)
)
)
Bằng cách chạy mã dưới đây, tôi có thể để có được những kết quả mong muốn
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;
......
}
kịch bản của tôi là tương tự như:
#!/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"
Nhưng toàn bộ quá trình mất 10 giây cho 5 máy chủ so với 1 máy chủ cho ít hơn hơn 2 giây. Tại sao vậy? Có cách nào để giảm bớt thời gian không? Đoán của tôi là lệnh exec đang đợi đầu ra được gán cho biến trước khi chuyển sang vòng lặp tiếp theo? Tôi đã cố gắng để google một chút nhưng hầu hết các câu trả lời cho mà không trả lại bất kỳ đầu ra ở tất cả ... Tôi cần đầu ra mặc dù
start_time = 2016-12-23T17: 42: 50, end_time = 2016-12-23T17: 43: 01. khoảng 11 giây cho 5 vòng lặp, vòng lặp đầu tiên kết thúc tại 42:51 vì vậy khoảng 1 ++ giây –