curl exec 504超时nginx

时间:2017-12-19 08:55:40

标签: curl php-curl

我正在尝试解析此网站:http://www.mz.gov.kz/ru/news,但我收到504错误。将connection_timeout更改为60秒后,我得到28 error: connect timed out。在另一台服务器上运行良好。也许我的IP被封锁了,我不知道。我的功能是

function get_web_page($url)
    {
      $uagent = "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.14";  
      $ch = curl_init( $url );   
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
      curl_setopt($ch, CURLOPT_USERAGENT, $uagent);  
      curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
      curl_setopt($ch, CURLOPT_TIMEOUT, 120);        
      curl_setopt($ch, CURLOPT_MAXREDIRS, 10);   
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
      curl_setopt($ch, CURLOPT_COOKIEFILE,"d://coo.txt");    
    $content = curl_exec( $ch );
    $err = curl_errno( $ch );
      $errmsg  = curl_error( $ch );
      $header  = curl_getinfo( $ch );
      curl_close( $ch );
      $header['errno']   = $err;
      $header['errmsg']  = $errmsg;
      $header['content'] = $content;
    //echo $errmsg.'s<br>';
      /*foreach($header as $key=>$value){
          echo $key.' -- > '.$value.'<br>';
      }*/
      return $header;
    }

1 个答案:

答案 0 :(得分:0)

您的代码有效。

504错误表示服务器端发生了一些问题,特别是您发出的请求需要(执行)的时间超过服务器配置允许的最大值,在这种情况下,在60到120秒之间。

如果响应错误代码为“正版”,则服务器可能会过载,或者您实际上正在发出导致超时的特定请求。

另一种选择可能是你的IP被禁止,服务器只是让连接超时作为“防御”措施,但这种情况非常罕见(根据我的经验)。 通常,当禁止IP时,连接才会被拒绝。更容易实现,减少资源消耗。