本文介绍了退出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提取的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!