卷曲获取标题与获取不是头请求

时间:2015-08-06 09:05:08

标签: php file curl header file-exists

okey我做了一个脚本检查文件是否存在,但我从Curl得到的标题是坏的

  $curl = curl_init( $url );
  curl_setopt( $curl, CURLOPT_NOBODY, true );
  curl_setopt( $curl, CURLOPT_HEADER, true );
  curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
  curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, true );
  curl_setopt( $curl, CURLOPT_FRESH_CONNECT, true);
  $data = curl_exec( $curl );
  var_dump($data);

它让我得到200响应,而@file_headers()得到我布尔值假,这是正确的文件不能下载(连接由同行重置)

我使用file_headers但是它比mul慢(检查大约10k文件)

任何想法如何修复curl以强制它在文件存在时正确显示它?

FYI curl_getinfo($ curl,CURLINFO_HTTP_CODE); 也显示200

*我的意思是如果文件被对等文件重置,因为cURL检测文件是否完美存在(发出Head请求),而get_headers()默认使用get请求,是否有办法强制cURL make get request?< /强>

添加curl_setopt($ curl,CURLOPT_HTTPGET,true)后

; 当我记录curl时,我看到:*来自服务器的空回复,同时得到&#34;由同行重置&#34;文件,但这是下载我的整个文件

好吧我想我已经解决了添加curl_setopt($ curl,CURLOPT_RANGE,&#34; 1-1&#34;)的问题;并且下载1个字节而不是获取标头,如果为false,则文件不存在或由对等方重置

1 个答案:

答案 0 :(得分:0)

重置发生在de http状态之后,所以是的,200状态是可能的。

错误似乎是禁止或缓慢处理下载。

这样做:

  • 在curl请求中指定用户代理
  • 在请求之间设置(随机)等待时间

请参阅以下示例:PHP cURL how to add the User Agent value OR overcome the Servers blocking cURL requests?