@Dark_Dante

Почему торомозит proc_open?

Здравствуйте. Посдкажите пожалуйста.
Есть скрипт. Допустим такого содержания
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 сек. Как победить эту штуку?
  • Вопрос задан
  • 171 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы