АСИНХРОННОСТЬ PHP 8
PHP 8 представил множество новых возможностей, одной из которых является поддержка асинхронности. Теперь PHP 8 может выполнять несколько задач одновременно, что повышает скорость работы и экономит ресурсы сервера.
Чтобы использовать асинхронность в PHP 8, можно воспользоваться расширением parallel
. Оно предоставляет API для выполнения асинхронных задач и работы с параллельными процессами.
Пример использования расширения parallel
:
$urls = ['https://example.com', 'https://google.com', 'https://yahoo.com'];$curl_options = [CURLOPT_RETURNTRANSFER => true];$parallel = new parallel\Runtime();$results = $parallel->run(function() use ($urls, $curl_options) { $curl_handlers = []; $mh = curl_multi_init(); foreach ($urls as $url) { $ch = curl_init($url); curl_setopt_array($ch, $curl_options); curl_multi_add_handle($mh, $ch); $curl_handlers[] = $ch; } do { curl_multi_exec($mh, $active); } while ($active > 0); $results = []; foreach ($curl_handlers as $ch) { $results[] = curl_multi_getcontent($ch); curl_multi_remove_handle($mh, $ch); } curl_multi_close($mh); return $results;});print_r($results);
В этом примере идет параллельный запрос нескольких страниц с помощью функции curl_multi_*
. Результаты запросов хранятся в массиве $results
.
Перевод Битрикс на PHP 8 // Ограничение версии PHP c 01.02.2023
Асинхронность, параллельность или многопоточность — что нужно разработчику?
№48 — Асинхронность в программировании
PHP 8 что ждать
PHP 8.0 - 8.2 - Производительность и фичи
Aсинхронный PHP / Антон Шабовта (Onliner)