Comment on page
Laravel Octane
How to monitor a Laravel application served by Octane
By default Inspector register a shutdown function to transfer data from your application to Inspector at the end of each request lifecycle.
Since Octane runs your application in a long running process the shutdown functions will never be called until the Octane server is stopped.
You have to manually flush the data collected by Inspector at end of the HTTP request life cycle.
You can do this by extending the original
WebRequestMonitoring
middleware provided by the Inspector package, and overwriting the terminate method to flush the data.Use the command below to create the new
InspectorOctaneMiddleware
:php artisan make:middleware InspectorOctaneMiddleware
Overwrite the terminate method to add the flush statement:
<?php
namespace App\Http\Middleware;
use Inspector\Laravel\Middleware\WebRequestMonitoring;
class InspectorOctaneMiddleware extends WebRequestMonitoring
{
/**
* Handle tasks after the response has been sent to the browser.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Http\Response $response
* @return void
*/
public function terminate($request, $response)
{
parent::terminate($request, $response);
inspector()->flush();
}
}
The terminate method will run after the response has been sent to the browser, and the data will be sent asynchronously in the background.
Register the new middleware in
App\Http\Kernel
instead of WebRequestMonitoring
class: /**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
...,
//\Inspector\Laravel\Middleware\WebRequestMonitoring::class,
\App\Http\Middleware\InspectorOctaneMiddleware::class,
],
'api' => [
...,
//\Inspector\Laravel\Middleware\WebRequestMonitoring::class,
\App\Http\Middleware\InspectorOctaneMiddleware::class,
],
Now Inspector is able to recognize the end of a transaction and monitor your application properly.
Last modified 1yr ago