Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как в php реализовать многопоточноть?
 
 автор: Bvz   (20.10.2017 в 10:39)   письмо автору
 
 

Или даже асинхронное выполнение кода, например:
Блок кода
file_get_contents
Блок кода

при выполнении file_get_contents возникает затык, равный времени тайм-аута,

как вывести в параллельный или асинхронный запрос file_get_contents, чтобы он не мешал выполнению основного кода, что ответит file_get_contents не имеет значение, но его выполнение необходимо, например:
Блок кода
Блок кода || file_get_contents
Блок кода

  Ответить  
 
 автор: elenaki   (20.10.2017 в 12:37)   письмо автору
 
   для: Bvz   (20.10.2017 в 10:39)
 

AJAX, кажется, достаточно асинхронный.

  Ответить  
 
 автор: mihdan   (20.10.2017 в 20:04)   письмо автору
 
   для: Bvz   (20.10.2017 в 10:39)
 

Вижу решение как:


Блок кода
Контент блока из кеша или file_get_contents через ajax с указанием таймаута
Блок кода

  Ответить  
 
 автор: Loneliness   (14.12.2017 в 02:18)   письмо автору
 
   для: 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 не очень годится для нормальной многопоточности и таких задач.. Стоит присмотреться к питону..

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования