Scope::asNotSafely
(PHP 8.6+, True Async 1.0)
public function asNotSafely(): Scope
Позначає область видимості як “небезпечну”. Коли для такої області викликається disposeSafely(), корутини не стають зомбі, а натомість отримують сигнал скасування. Це корисно для фонових задач, які не потребують гарантованого завершення.
Метод повертає той самий об’єкт області видимості, що дозволяє використовувати ланцюжки методів (fluent interface).
Значення, що повертається
Scope — той самий об’єкт області видимості (для ланцюжків методів).
Приклади
Приклад #1 Область видимості для фонових задач
<?php
use Async\Scope;
$scope = (new Scope())->asNotSafely();
$scope->spawn(function() {
while (true) {
// Background task: cache cleanup
cleanExpiredCache();
\Async\delay(60_000);
}
});
// With disposeSafely(), coroutines will be cancelled instead of becoming zombies
$scope->disposeSafely();
Приклад #2 Використання з inherit
<?php
use Async\Scope;
$parentScope = new Scope();
$bgScope = Scope::inherit($parentScope)->asNotSafely();
$bgScope->spawn(function() {
echo "Background process\n";
\Async\delay(10_000);
});
// On close: coroutines will be cancelled, not turned into zombies
$bgScope->disposeSafely();
Дивіться також
- Scope::disposeSafely — Безпечне закриття області видимості
- Scope::dispose — Примусове закриття області видимості
- Scope::cancel — Скасування всіх корутин