Здравствуйте. Посдкажите пожалуйста.
Есть скрипт. Допустим такого содержания
sleep(5); //(на самом деле тут не слип, а обращение к вебсервису и возврат результатов)
echo 'Hello, world';
Который тормозит на пять секунд и выводит Hello word. Допустим, этот скрипт надо вызвать 10 раз. 50 секунд это очень долго для нас. Делаем ассинхронный запрос через php cli типа такого
$descriptorspec = array(
0 => array('pipe', 'r'),
1 => array('pipe', 'w'),
2 => array('pipe', 'w'),
);
$pipes = array();
$process = proc_open('php script.php', $descriptorspec, $pipes); //открываем процесс.
while(proc_get_status($process)['running']){} //крутим пустой цикл, пока работает скрипт
//как только из цикла вышли, значит ответ уже получен, можем с ним работать
$stdout = stream_get_contents($pipes[1])
И все бы хорошо... Но sleep(5) - то есть 5 секунд. А такой вот вызов выполняется 6 секунд. Куда тратится еще секунда времени? Я там понимаю пару сотых, ну ладно десятых секунды... А на десять таких запросов, уже получается 10 секунд сверху, получается если это дело дергать в цикле, то вместо 5 секунд все это непотребство выполняется уже 15 сек. Как победить эту штуку?