У меня есть массив с сервером объекта так: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"
Но весь процесс занял 10 секунд для 5 серверов по сравнению с 1 сервером за меньшие чем 2 сек. Почему это? В любом случае, чтобы уменьшить время? Я предполагаю, что команда exec ожидала, что выход будет назначен переменной перед переходом к следующему циклу? Я пытался немного поработать с Google, но большая часть ответа для этого не требуется, так как я не возвращаю никакого вывода ... Мне нужен вывод, хотя
start_time = 2016-12-23T17: 42: 50, end_time = 2016-12-23T17: 43: 01. около 11 секунд для 5 циклов, первый конец цикла в 42:51, примерно 1 ++ sec –