Scope::disposeAfterTimeout
(PHP 8.6+, True Async 1.0)
public function disposeAfterTimeout(int $timeout): void
Планує закриття області видимості після зазначеного тайм-ауту. Коли тайм-аут спливає, викликається dispose(), що скасовує всі корутини та закриває область видимості. Це зручно для встановлення максимального часу існування області видимості.
Параметри
timeout — час у мілісекундах до автоматичного закриття області видимості.
Значення, що повертається
Значення не повертається.
Приклади
Приклад #1 Обмеження часу виконання
<?php
use Async\Scope;
$scope = new Scope();
// Scope will be closed after 10 seconds
$scope->disposeAfterTimeout(10_000);
$scope->spawn(function() {
try {
// Long operation
\Async\delay(60_000);
} catch (\Async\CancelledException) {
echo "Task cancelled by scope timeout\n";
}
});
$scope->awaitCompletion();
Приклад #2 Область видимості з обмеженим часом існування
<?php
use Async\Scope;
$scope = new Scope();
$scope->disposeAfterTimeout(5000); // 5 seconds for all work
$scope->spawn(function() {
\Async\delay(1000);
echo "Task 1: OK\n";
});
$scope->spawn(function() {
\Async\delay(2000);
echo "Task 2: OK\n";
});
$scope->spawn(function() {
\Async\delay(30_000); // Won't finish in time
echo "Task 3: OK\n"; // Will not be printed
});
$scope->awaitCompletion();
Дивіться також
- Scope::dispose — Негайне закриття області видимості
- Scope::disposeSafely — Безпечне закриття області видимості
- timeout() — Глобальна функція тайм-ауту