Beispielszenario:
Code: Select all
// Endpoint accessible through browser https://mywebsite.com/something
public function index(Request $request): void
{
Log::info('Before response sent');
defer(function () {
Log::info('Deferred task executed');
});
Log::info('After response sent');
}
// Endpoint accessible through API request https://mywebsite/api/something
public function search(Request $request): JsonResponse
{
Log::info('Before response sent.');
defer(function () {
Log::info('Deferred task executed.');
});
Log::info('After response sent.');
return response()->json(true);
}
Ich habe versucht, eine Middleware zu erstellen, die auf die API-Endpunkte angewendet wird. um sicherzustellen, dass die App beendet wird, damit die Verzögerungsfunktionen ausgeführt werden, aber kein Erfolg.
Code: Select all
class EnforceDeferForApi
{
public function handle(Request $request, Closure $next)
{
return $next($request);
}
public function terminate(Request $request, $response): void
{
app()->terminate();
}
}