curl常用设置

curl_easy_setopt( curl, CURLOPT_VERBOSE, 1L ); //在屏幕打印请求连接过程和返回http数据

curl_easy_setopt( curl, CURLOPT_TIMEOUT, 10 );//接收数据时超时设置,如果10秒内数据未接收完,直接退出

curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1); // 以下3个为重定向设置

curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); //返回的头部中有Location(一般直接请求的url没找到),则继续请求Location对应的数据

curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 1);//查找次数,防止查找太深

curl_easy_setopt( curl, CURLOPT_CONNECTTIMEOUT, 3 );//连接超时,这个数值如果设置太短可能导致数据请求不到就断开了


超时设置 CURLOPT_CONNECTTIMEOUT 和 CURLOPT_TIMEOUT 的区别

PHP cURL 的超时设置有两个 CURLOPT_CONNECTTIMEOUT 和 CURLOPT_TIMEOUT,他们的区别是:

– CURLOPT_CONNECTTIMEOUT 用来告诉curl在成功连接服务器前等待多久(连接成功之后就会开始缓冲输出),这个参数是为了应对目标服务器的过载,下线,或者崩溃等可能状况。
– CURLOPT_TIMEOUT 用来告诉成功curl从服务器接收缓冲完成前需要等待多长时间,如果目标是个巨大的文件,生成内容速度过慢或者链路速度过慢,这个参数就会很有用。
– PS 爬去的时候只加了CURLOPT_CONNECTTIMEOUT 经常会卡死

使用 cURL 下载 MP3 文件是一个对开发人员来说不错的例子,CURLOPT_CONNECTTIMEOUT 可以设置为10秒,标识如果服务器10秒内没有响应,脚本就会断开连接,CURLOPT_TIMEOUT 可以设置为100秒,如果MP3文件100秒内没有下载完成,脚本将会断开连接。

需要注意的是:CURLOPT_TIMEOUT 默认为0,意思是永远不会断开链接。所以不设置的话,可能因为链接太慢,会把 HTTP 资源用完。


libcurl使用easy模式阻塞卡死等问题的完美解决_curl_easy_perform阻塞-Linux文档类资源-CSDN下载 https://download.csdn.net/download/yunjingguang/7475785?utm_medium=distribute.pc_relevant.none-task-download-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-download-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

HTTP多线程下载+断点续传(libcurl库) - 立超的专栏 - 博客园 https://www.cnblogs.com/zlcxbb/p/6006861.html

curl学习之curl_setopt参数设置大总结 - 代码学堂 - 博客园 https://www.cnblogs.com/uxuew/p/7159865.html

上一篇:基于破壳漏洞的蠕虫实践


下一篇:通过PHP对接钉钉自定义机器人定时发送消息完整版