cURL同时请求:结束时出错(7) - CURLE_COUDN' T_CONNECT

时间:2018-05-30 15:55:40

标签: php curl

我的网站使用Zebra_cURL获取请求并行请求。但是当达到约500个请求系统开始返回CURLE_COUDN'T_CONNECT错误时。我也从论坛中读到了一些答案。我尝试了其中一些。但没有修复。如果有人知道这个错误的解决方案,请给出快速回答。 我目前正在使用此代码。假设已经定义了$com_url_arr_glo数组,它包含大约2300个网址..

$curl1 = new Zebra_cURL();

            $curl1->cache('cache', 3600);
            $curl1->option(CURLOPT_CONNECTTIMEOUT, 20);
            $curl1->option(CURLOPT_FOLLOWLOCATION, 1);
            $curl1->ssl(true);

            $curl1->get($com_url_arr_glo, 'getsizemk');

getsizemk是一个函数要在每个网址的抓取结束后在每个网址中获取一些信息。这就像Zebra cURL Documentation中提到的那样。

这是我在错误

后从Zebra_cURL获得的完整数组
[info] => Array
    (
        [original_url] => https://www.masterkreatif.com/page/12
        [url] => https://www.masterkreatif.com/page/12
        [content_type] => 
        [http_code] => 0
        [header_size] => 0
        [request_size] => 162
        [filetime] => -1
        [ssl_verify_result] => 0
        [redirect_count] => 0
        [total_time] => 30.109
        [namelookup_time] => 1.0E-6
        [connect_time] => 0.406
        [pretransfer_time] => 0.906
        [size_upload] => 0
        [size_download] => 0
        [speed_download] => 0
        [speed_upload] => 0
        [download_content_length] => -1
        [upload_content_length] => -1
        [starttransfer_time] => 0
        [redirect_time] => 0
        [redirect_url] => 
        [primary_ip] => 104.24.117.230
        [certinfo] => Array
            (
            )

        [primary_port] => 443
        [local_ip] => 192.168.43.56
        [local_port] => 25775
    )

[headers] => Array
    (
        [last_request] => Array
            (
                [0] => Array
                    (
                        [Request Method] => GET /page/12 HTTP/1.1
                        [Host] => www.masterkreatif.com
                        [User-Agent] => Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0)
                        [Accept] => */*
                        [Accept-Encoding] => gzip,deflate
                    )

            )

        [responses] => Array
            (
            )

    )

[body] => 
[response] => Array
    (
        [0] => CURLE_OPERATION_TIMEDOUT
        [1] => 28
    )

也忘了说,网址工作非常精细!

伙计们!我找到了一个解决方案。 但不知道这适用于所有类型的此错误。但我所做的只是在所有已处理的30个URL包之间添加5秒延迟。无论如何它修复了这个错误。感谢所有人的评论! 我添加的只是这个

$curl->pause_interval = 5;
$curl->threads = 30;

(适用于Zebra_cURL)

1 个答案:

答案 0 :(得分:1)

服务器可能会将您的大量请求视为攻击并且拒绝为您提供服务。

快速解决方法是在发出每个请求之间添加一个短暂的延迟。