|
|
|
| Или даже асинхронное выполнение кода, например:
Блок кода
file_get_contents
Блок кода
при выполнении file_get_contents возникает затык, равный времени тайм-аута,
как вывести в параллельный или асинхронный запрос file_get_contents, чтобы он не мешал выполнению основного кода, что ответит file_get_contents не имеет значение, но его выполнение необходимо, например:
Блок кода
Блок кода || file_get_contents
Блок кода | |
|
|
|
|
|
|
|
для: Bvz
(20.10.2017 в 10:39)
| | AJAX, кажется, достаточно асинхронный. | |
|
|
|
|
|
|
|
для: Bvz
(20.10.2017 в 10:39)
| | Вижу решение как:
Блок кода
Контент блока из кеша или file_get_contents через ajax с указанием таймаута
Блок кода
|
| |
|
|
|
|
|
|
|
для: Bvz
(20.10.2017 в 10:39)
| | С file_get_contents никак толком. Есть Multi cURL(многопоточность).
$ch1 = curl_init();
$ch2 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "http://link1/");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "http://link2/");
curl_setopt($ch2, CURLOPT_HEADER, 0);
$mh = curl_multi_init();
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);
$running = null;
do {
curl_multi_exec($mh, $running);
} while ($running > 0);
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
|
Калбэк функция, выполняемая во время работы Curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'http://host');
curl_setopt($ch, CURLOPT_WRITEFUNCTION,"MyFunction");
curl_exec($ch);
curl_close ($ch);
function MyFunction($ch,$str) {
echo $str;
return strlen($str);
}
|
Можно скомбинировать обе возможности..
А в общем случае php не очень годится для нормальной многопоточности и таких задач.. Стоит присмотреться к питону.. | |
|
|
|
|
|
|
|
для: Loneliness
(14.12.2017 в 02:18)
| | Тогда уже к Node.js | |
|
|
|