Intereting Posts
установить PHP cookie на клик Использование нескольких баз данных в CodeIgniter Как заставить построитель запросов выводить свой необработанный SQL-запрос в виде строки? Как выполнить мой SQL-запрос в CodeIgniter php geo ip loc не работает Сортировка массива слов – неанглийские буквы + двойные буквы символов PHP Преобразование файла UCS-2 в UTF-8 с помощью PHP iconv – обнаружен незаконный символ в строке ввода ссылка для скачивания скрыта Как я могу не позволить пользователю вернуться после выхода на PHP? PHP mail () возвращает false, но ошибка не регистрируется Частичный черный фон, когда водяной знак PNG-изображения с GD PHP Изменение размера изображения до квадрата, но сохраняйте пропорции и заполняйте прозрачность PHP Сортировка многомерного массива по количеству элементов API групп LinkedIn – получение логотипа группы для нескольких групп в одном запросе API

понимание php curl_multi_exec

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

Я хотел бы загрузить + = 70 URL + = параллельно.

http://www.php.net/manual/en/function.curl-multi-exec.php

<?php ... $active = null; //execute the handles do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); while ($active && $mrc == CURLM_OK) { if (curl_multi_select($mh) != -1) { do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); } } ... ?> 

Вы можете изучить две статьи, описывающие этот пример.

PHP и curl_multi_exec

Во-первых, вот высокий уровень. Есть два внешних контура. Первый из них отвечает за очистку буфера завитка прямо сейчас. Второй отвечает за ожидание дополнительной информации, а затем получает эту информацию. Это пример того, что называется блокировкой ввода-вывода. Мы блокируем выполнение остальной части программы до тех пор, пока сетевой ввод-вывод не будет выполнен. Хотя это не самый предпочтительный способ в целом для работы с сетевым вводом / выводом, это действительно наш единственный выбор в однопоточном синхронном PHP.

Выполнение curl_multi_exec правильным способом

Сначала переменную $ mrc и из руководства мы узнаем, что ответ представляет собой код cURL, определенный в предопределенных константах cURL. В esssence это регулярный ответ, и, как и любая другая функция PHP, curl_multi_exec не отличается и возвращает ответ только после его завершения. Это означает, что должен быть только ОДИН ответ. В идеальном мире этот единственный ответ равен 0 (ноль) или равен предопределенной константе CURLM_OK.