本文介绍了退出cURL提取的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图找到一种方法,只能快速访问一个文件,然后立即断开连接。



所以我决定使用cURL,因为它是最快的选项为了我。但我不知道我应该如何断开连接cURL。



下面的代码,Apache的访问日志说,我尝试访问的文件的确访问,但我感觉有点iffy这个,因为当我只是运行while循环没有打破它,它只是保持循环。当cURL完成提取文件时,循环是否应该停止?或者我只是愚蠢;是循环只是不断重新启动?

 <?php 
$ Resource = curl_init
curl_setopt($ Resource,CURLOPT_URL,'...');
curl_setopt($ Resource,CURLOPT_HEADER,0);
curl_setopt($ Resource,CURLOPT_USERAGENT,'...');
while(curl_exec($ Resource)){
break;
}
curl_close($ Resource);
?>

我尝试设置 CURLOPT_CONNECTTIMEOUT_MS / CURLOPT_CONNECTTIMEOUT 选项到非常小的值,但在这种情况下没有帮助。



有更多的

解决方案

这种说法是无关紧要的:

  while(curl_exec($ Resource)){
break;
}

而是保留返回值以备将来参考:

  $ result = curl_exec($ Resource); 

所以现在到你的问题:你可以告诉 curl 它应该只从身体一些字节,然后退出。这可以通过将 CURLOPT_BUFFERSIZE 减少为一个小值,并通过使用回调函数来告诉curl它应该停止:

  $ withCallback = array(
CURLOPT_BUFFERSIZE => 20,#〜要获取的字节值
CURLOPT_WRITEFUNCTION => function ,$ data){
echoWRITE:(,strlen($ data),)$ data\\\
;
return 0;
},
);

$ handle = curl_init(http://stackoverflow.com/);
curl_setopt_array($ handle,$ withCallback);
curl_exec($ handle);
curl_close($ handle);

输出:

 code> WRITE:(10)<!DOCTYPE 

请使用 CURLOPT_NOBODY ,这将永远不会获取正文。但它不是GET请求。



连接超时设置是指连接超时所需的时间。 connect是服务器接受curl的输入并且curl开始知道服务器的输入的阶段。它与curl从服务器获取数据的阶段无关,这是

您可以在PHP手册中找到一个很长的可用选项列表: a href =http://php.net/curl_setopt =nofollow> curl_setopt .

这篇关于退出cURL提取的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-26 20:24