Я следую этому руководству о том, как использовать curl_multi
. http://arguments.callee.info/2010/02/21/multiple-curl-requests-with-php/
Я не могу сказать, что я делаю неправильно, но curl_multi_getcontent
возвращает null. Предполагается вернуть JSON. Я знаю, что это не вызов mysql, поскольку он работал с циклом while и стандартом curl_exec
, но страница слишком долго загружалась. (Я изменил некоторые детали setopt для обеспечения безопасности)
Соответствующий фрагмент кода PHP. Я закрываю цикл while в конце.
$i = 0;
$ch = array();
$mh = curl_multi_init();
while($row = $result->fetch_object()){
$ch[$i] = curl_init();
curl_setopt($ch[$i], CURLOPT_CAINFO, 'cacert.pem');
curl_setopt($ch[$i], CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch[$i], CURLOPT_URL, 'https://mysite.com/search/'.$row->username.'/');
curl_multi_add_handle($mh, $ch[$i]);
$i++;
}
$running = 0;
do {
curl_multi_exec($mh, $running);
} while ($running > 0);
$result->data_seek(0);
$i = 0;
while ($row = $result->fetch_object()) {
$data = curl_multi_getcontent($ch[$i]);
$json_data = json_decode($data);
var_dump($json_data);
ИЗМЕНИТЬ
Вот код, который в настоящее время работает, но вызывает слишком медленную загрузку страницы
$ch = curl_init();
curl_setopt($ch, CURLOPT_CAINFO, 'cacert.pem');
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
while($row = $result->fetch_object()){
curl_setopt($ch, CURLOPT_URL, 'https://mysite.com/search/'.$row->username.'/');
$data = curl_exec($ch);
$json_data = json_decode($data);
var_dump($json_data);
}