Параллельность PHP

370
18 февраля 2017, 08:12

Как реализовать параллельные запросы с помощью pthreads php?

Все статьи, которые нашел на английском.

Подскажите, как сделать простенький многопоточный скрипт например с file_get_contents('//test.ru');

Answer 1

Многопоточность доступна лишь тогда, когда на сервере больше одного ядра. Воспользуйтесь мульти cUrl'ом. Это будет быстрей чем file_get_contents. Есть хорошая статья на эту тему. Ниже привожу пример многопоточного cUrl:

<?php
$urls = array(
    'http://graph.facebook.com/http://tech.vg.no',
    'http://graph.facebook.com/http://www.vg.no',
);
$multi = curl_multi_init();
$channels = array();
foreach ($urls as $url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($multi, $ch);
    $channels[$url] = $ch;
}
$active = null;
do {
    $mrc = curl_multi_exec($multi, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($multi) == -1) {
        continue;
    }
    do {
        $mrc = curl_multi_exec($multi, $active);
    } while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
foreach ($channels as $channel) {
    echo curl_multi_getcontent($channel);
    curl_multi_remove_handle($multi, $channel);
}
curl_multi_close($multi);
?>
READ ALSO
Трансляция на сайт через OBS

Трансляция на сайт через OBS

Появились на руках исходники цмски, которая транслирует работу через программу OBS Studio, но я не понимаю как оно все работает

786
Проверка ключа сессии в node.js

Проверка ключа сессии в node.js

web-приложение состоит из 1 статического файла html, который после загрузки на клиент через apache 24 начинает взаимодействовать с приложением node

416
Не запускается index.php на хостинге

Не запускается index.php на хостинге

Добрый день! Создал сайт, залил на Hostingerru : http://tranquil-peak16

462
браузерная игра на php ее интерфейс

браузерная игра на php ее интерфейс

делаем игру на php (браузерную), нужно сделать ее с интерфейсомна чем лучше его написать и как связать кроме HTML ??

357