Scope::asNotSafely
(PHP 8.6+, True Async 1.0)
public function asNotSafely(): Scope
Marca el ámbito como “no seguro”. Cuando se llama a disposeSafely() en dicho ámbito, las corrutinas no se convierten en zombis, sino que reciben una señal de cancelación. Esto es útil para tareas en segundo plano que no requieren finalización garantizada.
El método devuelve el mismo objeto de ámbito, lo que permite el encadenamiento de métodos (interfaz fluida).
Valor de retorno
Scope — el mismo objeto de ámbito (para encadenamiento de métodos).
Ejemplos
Ejemplo #1 Ámbito para tareas en segundo plano
<?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();
Ejemplo #2 Uso con 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();
Ver también
- Scope::disposeSafely — Cerrar el ámbito de forma segura
- Scope::dispose — Cerrar el ámbito de forma forzada
- Scope::cancel — Cancelar todas las corrutinas