# Laravel Octane

By defaults Inspector registers 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 data transfer must be performed at the end of the HTTP request life cycle.

So instead of using the normal `WebRequestMonitoring` middleware, you should attach to your routes the Octane specialized middleware.

### Configure the Octane middleware

Register the `InspectorOctaneMiddleware` class instead of `WebRequestMonitoring`:

#### Laravel 11

```php
use \Inspector\Laravel\Middleware\InspectorOctaneMiddleware;

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        // routes
    )
    ->withMiddleware(function (Middleware $middleware) {
        // Append the middleware
        $middleware->appendToGroup('web', InspectorOctaneMiddleware::class)
            ->appendToGroup('api', InspectorOctaneMiddleware::class);
    })
    ->withExceptions(function (Exceptions $exceptions) {
        //
    })->create();
```

#### Laravel <= 10

```php
/**
 * The application's route middleware groups.
 *
 * @var array
 */
protected $middlewareGroups = [
    'web' => [
        ...,
        //\Inspector\Laravel\Middleware\WebRequestMonitoring::class,
        \Inspector\Laravel\Middleware\InspectorOctaneMiddleware::class,
    ],
    
    'api' => [
        ...,
        //\Inspector\Laravel\Middleware\WebRequestMonitoring::class,
        \Inspector\Laravel\Middleware\InspectorOctaneMiddleware::class,
    ],
]
```

Now Inspector is able to recognize the end of an HTTP requests and monitor your application properly.

{% hint style="info" %}

#### No configuration is needed for artisan commands and background jobs. They will continue to be monitored as usual.

{% endhint %}
