Подскажите как лучше организовать асинхронные запросы в PHP?
Мне нужно отправить запрос, получить ответ и произвести некоторые вычисления с этими данными.
Буду премного благодарен за любую информацию.
Пробовал с popen, примерно так, но что-то подсказывает, что я делаю не так:
$url = "someurl";
for ($i=1;$i<=2000;$i++) {
if(($fp = popen('curl "'.$url.'"', "r")) ) {
while(!feof($fp)) {
$data[] = fread($fp, 1024);
flush();
}
fclose($fp);
}
someFunctionForWorkWithData($data);
}
Вам нужно использовать мультикурл, он дает некоторую асинхронность
$mc = curl_multi_init();
$c = [];
for ($i=1;$i<=2000;$i++) {
$c[$i] = curl_init();
//набиваете $c[$i] нужными вам данными
curl_multi_add_handle($mc,$c[$i]);
}
$active = null;
do {
$mrc = curl_multi_exec($mc, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
if (curl_multi_select($mc) != -1) {
do {
$mrc = curl_multi_exec($mc, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
$responses = [];
for ($i=1;$i<=2000;$i++) {
$responses[$i] = curl_multi_getcontent($c[$i]);
curl_multi_remove_handle($mc,$c[$i]);
}
curl_multi_close($mc);
Сборка персонального компьютера от Artline: умный выбор для современных пользователей