Twinkle

defer()ヘルパー

キューとは違って現在のリクエストサイクルでレスポンスを返した直後になんらかの処理を実行するのがdefer()

https://laravel.com/docs/11.x/helpers#deferred-functions

これでログには1,2,3の順で記録される。

// routes/web.php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    info('1');

    defer(fn () => info('3'));

    info('2');

    return view('welcome');
});

Laravel 11.23時点ではSwooleをインストールした環境では不具合がある。Swooleにもグローバルなdefer()関数が定義されてるから。
https://github.com/laravel/framework/issues/52774

PHP Fatal error: Uncaught Swoole\Error: API must be called in the coroutine

Windows+WSL(Ubuntu)+PHP8.3の場合、Swooleを削除で解決する。

sudo apt remove php8.3-swoole