Добрый день, это снова я.
Подскажите, требуется реализовать вот такой класс — менеджер запросов.
Основная задача: функции должны возвращать управление моментально.
Хотел сделать на cURL (curl_multi), возникли следующие проблемы:
Вопрос 1
практически не нашел понятной документации по curl_multi_exec (касательно возвращаемого значения), а именно:
всегда ли curl_multi_exec возвращает CURLM_OK, если все переданные дескрипторы потоков корректно могут выполняться?
Вопрос 2
Можно ли после вызова culr_multi_exec добавлять (curl_multi_add_handler) потоки после чего повторно выполнять curl_multi_exec, если часть потоков уже выполняется, часть — уже выполнилась. Можно ли их убирать (curl_multi_remove_handler) во время выполнения?
Сейчас на каждый посылаемый запрос создается помимо «обычного» потока (curl_init) еще один мульти-поток (curl_multi_init). Надо было написать быстро, не стал тестировать
Вопрос 3
Возможно, есть уже такой удобный класс, дабы не реализовывать самому (повтор ошибочных запросов, удаление незапрошенных в течение X минут данных, примитивные проверки)
/*
* Интерфейс класса:
* sendRequest - отправить запрос
* getResponse - получить данные по запросу, если выполнен, если нет - NULL
*/
class X {
public sendRequest($request_data) {
//...
returb $new_request_id;
}
public getResponse($request_id) {
//...
return (is_null($response)?"NULL":$response)
}
}