PHP Curl 扩展不工作
我写了一篇文章,当我在本地主机上尝试时,它可以正确地为我获取数据。它在另一台服务器上也运行良好。但是当我将其传输到服务器时,它显示一条警告消息...
警告:(null)(): 4 不是第 0 行未知中的有效 cURL 句柄资源
。
任何人都可以建议我必须在 .htacess 中进行哪些更改以及我需要在控制面板中进行更改...
这是我正在使用的代码片段。
function multiRequest($data, $options = array()) {
// array of curl handles
$curly = array();
// data to be returned
$result = array();
// multi handle
$mh = curl_multi_init();
// loop through $data and create curl handles
// then add them to the multi-handle
foreach ($data as $id => $d) {
$curly[$id] = curl_init();
$url = (is_array($d) && !empty($d['url'])) ? $d['url'] : $d;
curl_setopt($curly[$id], CURLOPT_URL, $url);
curl_setopt($curly[$id], CURLOPT_HEADER, 0);
curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, 1);
// post?
if (is_array($d)) {
if (!empty($d['post'])) {
curl_setopt($curly[$id], CURLOPT_POST, 1);
curl_setopt($curly[$id], CURLOPT_POSTFIELDS, $d['post']);
}
}
// extra options?
if (!empty($options)) {
curl_setopt_array($curly[$id], $options);
}
curl_multi_add_handle($mh, $curly[$id]);
}
// execute the handles
$running = null;
do {
curl_multi_exec($mh, $running);
} while($running > 0);
// get content and remove handles
foreach($curly as $id => $c) {
$result[$id] = curl_multi_getcontent($c);
curl_multi_remove_handle($mh, $c);
}
// all done
curl_multi_close($mh);
return $result;
}
for ($i=0;$i<$length;$i++){
$no = $start + $i;
$data[$i]['url'] = 'http://abc.php';
$data[$i]['post'] = array();
$data[$i]['post']['regno'] = $no;
}
$r = multiRequest($data);
// the I have a code to use the $r (result array obtained)
谢谢
I wrote a piece which was fetching data for me correctly when I was trying it on my localhost. Its also working fine on another server. But when I transferred it to server it is showing a warning msg...
Warning: (null)(): 4 is not a valid cURL handle resource in Unknown on line 0
.
Can anyone suggest what changes I have to make in .htacess and where I need to go in control panel to make the changes...
Here is the piece of code that I am using.
function multiRequest($data, $options = array()) {
// array of curl handles
$curly = array();
// data to be returned
$result = array();
// multi handle
$mh = curl_multi_init();
// loop through $data and create curl handles
// then add them to the multi-handle
foreach ($data as $id => $d) {
$curly[$id] = curl_init();
$url = (is_array($d) && !empty($d['url'])) ? $d['url'] : $d;
curl_setopt($curly[$id], CURLOPT_URL, $url);
curl_setopt($curly[$id], CURLOPT_HEADER, 0);
curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, 1);
// post?
if (is_array($d)) {
if (!empty($d['post'])) {
curl_setopt($curly[$id], CURLOPT_POST, 1);
curl_setopt($curly[$id], CURLOPT_POSTFIELDS, $d['post']);
}
}
// extra options?
if (!empty($options)) {
curl_setopt_array($curly[$id], $options);
}
curl_multi_add_handle($mh, $curly[$id]);
}
// execute the handles
$running = null;
do {
curl_multi_exec($mh, $running);
} while($running > 0);
// get content and remove handles
foreach($curly as $id => $c) {
$result[$id] = curl_multi_getcontent($c);
curl_multi_remove_handle($mh, $c);
}
// all done
curl_multi_close($mh);
return $result;
}
for ($i=0;$i<$length;$i++){
$no = $start + $i;
$data[$i]['url'] = 'http://abc.php';
$data[$i]['post'] = array();
$data[$i]['post']['regno'] = $no;
}
$r = multiRequest($data);
// the I have a code to use the $r (result array obtained)
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这并不意味着 cURL 扩展不起作用,恰恰相反。 CURL 正在工作,但是当您尝试访问传递给curl 的选项时,您没有传递curl 资源处理程序。
例如,
您需要使用 $ch 作为您的处理程序,我想您没有这样做?
附带说明一下,如果未安装curl,您会得到一个异常。除非你将它包装在 try catch/function 中。
That doesn't mean that the cURL extension isn't working, quite the opposite. CURL is working, however when you are trying to access the options which you pass to curl, you aren't passing the curl resource handler.
For example,
You need to use the $ch as your handler, which I imagine you are not doing?
As a side note, if curl wasn't installed, you would get an exception. Unless you are wrapping it in try catch/function exist.