1

我正在使用 curl_multi 在与此类似的滚动 curl 脚本中发送电子邮件,但我添加了 10 秒的 curlopt_timeout 和 20 秒的 curlopt_connecttimeout http://www.onlineaspect.com/2009/01/26/how-使用-curl_multi-without-blocking/

在测试它时,我分别使用 timeout_ms 和 connecttimeout_ms 将超时减少到 1ms,只是为了看看它如何处理超时。但是超时会杀死整个 curl 过程。即使有一次超时,有没有办法继续其他线程?谢谢。

-devo

4

1 回答 1

0

https://github.com/krakjoe/pthreads

<?php
class Possibilities extends Thread {
    public function __construct($url){
        $this->url = $url;
    }

    public function run(){
        /*
        * Or use curl, this is quicker to make an example ...
        */
        return file_get_contents($this->url);
    }
}
$threads = array();
$urls = get_my_urls_from_somewhere();
foreach($urls as $index => $url){
    $threads[$index]=new Possibilities($url);
    $threads[$index]->start();
}
foreach($threads as $index => $thread ){
    if( ( $response = $threads[$index]->join() ) ){
        /** good, got a response */
    } else { /** we do not care **/ }
}
?>

我的猜测是,您使用 curl multi 因为它是并发执行发送电子邮件的代码的唯一选择......如果是这种情况,我不建议您使用类似上面代码的任何东西,我建议您线程直接调用 mail() ,因为到目前为止这将更快、更有效。

但是现在您知道了,您可以在 PHP 中使用线程 .. 享受 :)

于 2012-09-13T19:13:30.903 回答