| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Сеть > и снова curl_multi... |
| Автор: cia 20.4.2008, 14:27 | ||
| Собственно, кто использовал это недокументированное чудо, помогите... Вот кусок кода из примера на php.net:
Как я понял в $flows помещается количество активных потоков и цикл продолжается пока не отработают все. И вот несколько вопросов: 1. Что возвращает curl_multi_exec в $res? 2. Есть ли возможность установить функцию-обработчик, чтобы отловить момент окончания работы одного из потоков. 3. Как в приведенном выше цикле определить какой именно поток закончил работу в то время, когда другие еще не закончили? |
| Автор: cia 23.4.2008, 16:31 |
| Таки никто не в курсе? А все-таки очень хотелось бы знать... Тогда буду писать сокетами |
| Автор: Fortop 23.4.2008, 16:51 |
| 1,2,3. http://ua.php.net/manual/en/function.curl-multi-exec.php Тут есть почти все что ты спросил. |
| Автор: cia 25.4.2008, 17:24 | ||
| Fortop, Да не очень там все хорошо описано, да плюс еще в английском я весьма плохо шарю. Ну, короче, просидел весь день, но разобрался. Вот как работает у меня, может кому понадобится...
Писал в блокноте, может где и ошибся. 1) curl_multi_exec при каждом вызове помещает в $flows количество активных потоков, поэтому ждем когда $flows будет меньше $flowcount 2) curl_multi_info_read возвращает информацио об очередном отработавшем потоке или false, если с момента последнего вызова этой функции ни каких новых событий нет 3) информация в $info обновляется только при вызове curl_multi_exec, поэтому ожидать окончания работы потока при помощи этой функции не получится 4) новый урл можно запустить только через последовательный вызов трех функций: curl_multi_remove_handle, curl_multi_add_handle и curl_multi_exec |