0

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

7
  • need some code bro before we can suggest something Commented Jun 1, 2011 at 14:45
  • 1
    changing .htaccess/cpanel is not going to help this error. It's a bug in your code. probably you're overwriting your curl handle variable somewhere so that it's no longer a curl handle. Please post the relevant code. As is, this question cannot be properly answered. Commented Jun 1, 2011 at 14:46
  • This is the code that I am using Commented Jun 1, 2011 at 14:46
  • But the same code was working fine in my lappy(local server) Commented Jun 1, 2011 at 14:48
  • 1
    You will have to edit your question and post your code there. It doesn't work too well in a comment (plus, it's in the wrong place!) Commented Jun 1, 2011 at 15:09

1 Answer 1

1

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.

Sign up to request clarification or add additional context in comments.

1 Comment

Actually I am trying for a multi request approximately 1000 requests in a page

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.