get_coroutines
(PHP 8.6+, True Async 1.0)
get_coroutines() — Возвращает массив всех активных корутин. Полезно для диагностики и мониторинга.
Описание
get_coroutines(): array
Возвращаемое значение
Массив объектов Async\Coroutine — все корутины, зарегистрированные в текущем запросе.
Примеры
Пример #1 Мониторинг корутин
<?php
use function Async\spawn;
use function Async\get_coroutines;
use function Async\delay;
spawn(function() { delay(10000); });
spawn(function() { delay(10000); });
// Даём корутинам запуститься
delay(10);
foreach (get_coroutines() as $coro) {
echo sprintf(
"Корутина #%d: %s, запущена в %s\n",
$coro->getId(),
$coro->isSuspended() ? 'приостановлена' : 'работает',
$coro->getSpawnLocation()
);
}
?>
Пример #2 Обнаружение утечек
<?php
use function Async\get_coroutines;
// В конце запроса проверяем — не осталось ли незавершённых корутин
$active = get_coroutines();
if (count($active) > 0) {
foreach ($active as $coro) {
error_log("Незавершённая корутина: " . $coro->getSpawnLocation());
}
}
?>
См. также
- current_coroutine() — текущая корутина
- Корутины — концепция корутин