Scope::asNotSafely
(PHP 8.6+, True Async 1.0)
public function asNotSafely(): Scope
Markiert den Scope als “nicht sicher”. Wenn disposeSafely() auf einem solchen Scope aufgerufen wird, werden die Koroutinen nicht zu Zombies, sondern erhalten ein Abbruchsignal. Dies ist nuetzlich fuer Hintergrundaufgaben, die keine garantierte Fertigstellung erfordern.
Die Methode gibt dasselbe Scope-Objekt zurueck und ermoeglicht so Methodenverkettung (Fluent Interface).
Rueckgabewert
Scope — dasselbe Scope-Objekt (fuer Methodenverkettung).
Beispiele
Beispiel #1 Scope fuer Hintergrundaufgaben
<?php
use Async\Scope;
$scope = (new Scope())->asNotSafely();
$scope->spawn(function() {
while (true) {
// Hintergrundaufgabe: Cache-Bereinigung
cleanExpiredCache();
\Async\delay(60_000);
}
});
// Bei disposeSafely() werden Koroutinen abgebrochen, statt zu Zombies zu werden
$scope->disposeSafely();
Beispiel #2 Verwendung mit inherit
<?php
use Async\Scope;
$parentScope = new Scope();
$bgScope = Scope::inherit($parentScope)->asNotSafely();
$bgScope->spawn(function() {
echo "Hintergrundprozess\n";
\Async\delay(10_000);
});
// Beim Schliessen: Koroutinen werden abgebrochen, nicht in Zombies verwandelt
$bgScope->disposeSafely();
Siehe auch
- Scope::disposeSafely — Den Scope sicher schliessen
- Scope::dispose — Den Scope erzwungen schliessen
- Scope::cancel — Alle Koroutinen abbrechen