Scope::asNotSafely
(PHP 8.6+, True Async 1.0)
public function asNotSafely(): Scope
Marque le scope comme « non sûr ». Lorsque disposeSafely() est appelé sur un tel scope, les coroutines ne deviennent pas des zombies mais reçoivent à la place un signal d’annulation. Cela est utile pour les tâches en arrière-plan qui ne nécessitent pas de garantie d’achèvement.
La méthode retourne le même objet scope, permettant le chaînage de méthodes (interface fluide).
Valeur de retour
Scope — le même objet scope (pour le chaînage de méthodes).
Exemples
Exemple #1 Scope pour les tâches en arrière-plan
<?php
use Async\Scope;
$scope = (new Scope())->asNotSafely();
$scope->spawn(function() {
while (true) {
// Tâche en arrière-plan : nettoyage du cache
cleanExpiredCache();
\Async\delay(60_000);
}
});
// Avec disposeSafely(), les coroutines seront annulées au lieu de devenir des zombies
$scope->disposeSafely();
Exemple #2 Utilisation avec inherit
<?php
use Async\Scope;
$parentScope = new Scope();
$bgScope = Scope::inherit($parentScope)->asNotSafely();
$bgScope->spawn(function() {
echo "Background process\n";
\Async\delay(10_000);
});
// À la fermeture : les coroutines seront annulées, pas transformées en zombies
$bgScope->disposeSafely();
Voir aussi
- Scope::disposeSafely — Fermer le scope en toute sécurité
- Scope::dispose — Fermer le scope de manière forcée
- Scope::cancel — Annuler toutes les coroutines