2012-02-22 2 views
0

сначала это может показаться странным запросом, но есть причина для этого ... и эта причина заключается в параллельной параллельной очередности через curl_multi_init().с использованием CURL в PHP, например fsockopen() для подключения к SMTP?

В настоящее время я использую fsockopen('mxhost.com',25,$errno, $errstr, $timeout), а затем отправляю команды SMTP для массового подтверждения адресов электронной почты.

для многих разных хостов он становится очень медленным, поэтому я хотел бы открыть параллельные соединения с разными хостами, чтобы ускорить работу. я не мог найти способ сделать это легко, даже с неблокирующимся stream_socket_client(), возможно, есть способ сделать это, но я его не нашел.

с CURL, я думаю, что мне нужно сделать что-то вроде:

curl_setopt($ch, CURLOPT_URL, "telnet://mxhost.com:25"); 
curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_TELNET); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $query."\r\n"); 

однако, это держит тайм-аута. Я не уверен, что это из-за чего-то, что делает драйвер протокола TELNET внутри или ошибка в моем коде. есть ли способ просто заставить его имитировать соединение с сырым сокетом?

спасибо!

ответ

0

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

http://ca.php.net/manual/en/function.stream-set-blocking.php

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