在PHP中使用CURL,如fsockopen()连接SMTP


using CURL in PHP like fsockopen() for connecting to SMTP?

起初,这可能看起来像是一个奇怪的请求,但想要这样做是有原因的。。。并且该原因是经由CCD_ 1的异步并行排队。

目前我正在使用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协议驱动程序在内部做了什么,还是因为我的代码中有错误。有没有一种方法可以让它模仿原始套接字连接?

谢谢!

您可以使用普通的PHP流函数,并将它们设置为非阻塞。同时打开多个并stream_select()以获取准备好读取或写入的内容。

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