开发者

PHP Curl Extension not working

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 (!empt开发者_运维百科y($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


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,

 $ch = curl_init(); 
 curl_setopt($ch, CURLOPT_URL, $url); 

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜