За последние 24 часа нас посетили 24510 программистов и 1712 роботов. Сейчас ищут 1765 программистов ...

Виснут форки

Тема в разделе "Вопросы от блондинок", создана пользователем mr.oooo, 27 май 2011.

  1. mr.oooo

    mr.oooo Активный пользователь

    С нами с:
    27 май 2011
    Сообщения:
    1
    Симпатии:
    0
    Доброго времени суток.
    Возникла необходимость в многопоточности на PHP. Пишу используя форки.
    В процессе тестирования скрипта столкнулся с нестабильной работой, некоторые процессы генерируемые форком зависают намертво.
    За основу работы с форками использую этот скрипт
    Каждый форк отправляет POST запрос на сервер с определенными параметрами по протоколу SSL и ждет ответа от сервера.
    Все это работает через прокси (socks5).
    Зависают форки которые были запущены первыми, т.е. 35 из 37 завершатся успешно.
    В связи с этим вопрос: Как фиксить эти подвисания? Куда копать? Есть подозрения, что курл может виснуть на на медленных соксах и не завершиться.
    PHP:
    1.  
    2. $process = curl_init($url);
    3. curl_setopt($process, CURLOPT_HEADER, false);
    4. curl_setopt($process, CURLOPT_FOLLOWLOCATION, true);
    5. curl_setopt($process, CURLOPT_POST, true);
    6. curl_setopt($process, CURLOPT_RETURNTRANSFER, true);
    7. curl_setopt($process, CURLOPT_HTTPHEADER, $headers);
    8. curl_setopt($process, CURLOPT_POSTFIELDS, $data);
    9. curl_setopt($process, CURLOPT_URL, $url);
    10. curl_setopt($process,CURLOPT_CONNECTTIMEOUT, 15);
    11. curl_setopt($process,CURLOPT_TIMEOUT, 15);
    12. curl_setopt($process, CURLOPT_PROXY, $proxy);
    13. curl_setopt($process, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
    14. $text = curl_exec($process);
    15. curl_close($process);
    16.  
    Если необходимы для обрисования задачи еще какие-то сведения, будьте добры намекните.