Twinkle
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