如题。
程序已经写好了。本地的成功率是100%。
放到lnmp环境上成功率只有10%。刷10下有一次可以采集成功。
关键是我采集百度本地和服务器上都是100%成功的,换成顶点XS就不行。
下面是代码。哪位大神帮忙看看,我现在有点怀疑是不是服务器环境的问题。
function curl($url,$params = array(),$header = array()){
if(empty($url)) return $url;
if(empty($header)){
//默认一个header
$header = C('HEADER_COMMON');
}
if(isset($params['is_demo'])){
//print_r($header);exit;
}
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,$url);//请求url地址
curl_setopt($curl, CURLOPT_HTTPHEADER , $header ); //构造IP
if(!empty($params) && count($params) > 0){
curl_setopt($curl, CURLOPT_POST, true);
//Request Payload格式数据
if(isset($params['is_json']) && $params['is_json'] === true){
unset($params['is_json']);
$params = json_encode($params);
}else{
$params = http_build_query($params);
}
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
}
//curl_setopt($curl, CURLOPT_HEADER, true);//是否返回响应头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//是否将结果返回
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);//是否重定向
//curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36');
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 只信任CA颁布的证书
//curl_setopt($curl, CURLOPT_CAINFO, $cacert); // CA根证书(用来验证的网站证书是否是CA颁布)
//curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 检查证书中是否设置域名,并且是否与提供的主机名匹配
// 从证书中检查SSL加密算法是否存在
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
//curl_setopt($curl, CURLOPT_HTTPHEADER, array("Expect: "));
curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);//用来告诉PHP脚本在成功连接服务器前等待多久(连接成功之后就会开始缓冲输出),这个参数是为了应对目标服务器的过载,下线,或者崩溃等可能状况;
curl_setopt($curl, CURLOPT_TIMEOUT, 30);//用来告诉成功PHP脚本,从服务器接收缓冲完成前需要等待多长时间。如果目标是个巨大的文件,生成内容速度过慢或者链路速度过慢,这个参数就会很有用。
// 自动设置Referer
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
//curl_setopt($curl, CURLOPT_COOKIEJAR, "D:\phpStudy\WWW\cj\cooBE66.tmp");// //写入cookie信息
//setcookie('cookie_jar', $cookie_jar); //保存cookie路径
$data = curl_exec($curl); //执行
curl_close($curl);
return $data;
}
php curl采集放到服务器有时可以采到有时采不到
答案:1 悬赏:20 手机版
解决时间 2021-03-11 04:25
- 提问者网友:玫瑰园
- 2021-03-10 12:40
最佳答案
- 五星知识达人网友:蓝房子
- 2021-03-10 12:46
在curl_close($curl);前面加上$error = curl_error($curl);
然后打印看看有没有报错信息。
另外可以在当前文件最前面加入
ini_set('display_errors','on');
error_reporting(E_ALL);
看看运行有没有什么错误提示。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯