Является ли PHP-CURL curl_multi_exec действительно многопоточным внутри? - PullRequest
5 голосов
/ 16 января 2012

Мой вопрос очень прост, как указано в заголовке. Однако я перефразирую это снова.

Я хочу скачать несколько сайтов, используя php-curl. Я запускаю это с консоли. Я собираюсь использовать curl_multi_exec для загрузки всех сайтов. Теперь вопрос, будет ли curl создавать разные потоков для каждого запроса?

Я знаю, что могу добиться этого, развязав несколько процессов. Но это не поток. Я не хочу нанизывать. Хочу узнать, многопоточный ли он?

1 Ответ

12 голосов
/ 17 января 2012

Нет.Мультиинтерфейс выполняет несколько запросов параллельно, но делает это с помощью неблокирующих вызовов API.

Проблема, с которой могут столкнуться люди, возникает тогда, когда при определенной передаче необходимо разрешить имя хоста в качестве стандартного распознавателя имени хоста.функции в большинстве операционных систем являются синхронными, что заставляет каждое разрешение блокировать все другие передачи.Это преодолевается в libcurl путем предоставления альтернативных обработчиков обработчика, таких как один, созданный для использования c-ares для разрешения, и другого, который запускает «исходный преобразователь» в отдельном потоке - так называемый распознаватель потоков.

...