2010-11-18 4 views
2

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

Спасибо,

Адам

+0

Вы можете использовать 'netstat' и посмотреть количество активных подключений, которые он открывает. Затем увеличьте количество URL-адресов, пока не заметите, что счетчик из netstat начнет падать ... – ircmaxell

+0

Да, я подумал об этом, но большинство URL-адресов вернутся менее чем, скажем, через полсекунды. Я попробую, спасибо! –

+0

Ну, создайте сайт на том же сервере (или другом локальном). Создайте страницу, которая просто спит в течение 60 секунд или около того. Затем откройте тонну подключений к этой странице. Это должно быть достаточно долго, чтобы вы могли получить значимый результат из 'netstat', но все же легко и быстро создать ... – ircmaxell

ответ

2

Вы можете видеть из PHP исходного кода, который он использует выберите() и неблокируемый читает. Таким образом, используется только один процесс.

Обратите внимание, что select() не удастся, если вы дадите ему файловый дескриптор с помощью fd> = FD_SETSIZE. Предел FD_SETSIZE определяется при компиляции PHP. Значение по умолчанию - 256. Лучше использовать poll() в реализации PHP.

О правильной curl_multi_exec() Использование:

curl_multi_exec() должно сопровождаться curl_multi_select(). Это будет ждать доступных данных, а не проверять их в цикле занятости. example in the PHP manual хороший.

Смежные вопросы