To run the HTTP application with Laravel Octane (opens in a new tab) instead of PHP-FPM, change the following options in the
functions: web: handler: Bref\LaravelBridge\Http\OctaneHandler runtime: php-81 environment: BREF_LOOP_MAX: 250 # ...
Keep the following details in mind:
- Laravel Octane does not need Swoole or RoadRunner on AWS Lambda, so it is not possible to use Swoole-specific features.
- Octane keeps Laravel booted in a long-running process, beware of memory leaks (opens in a new tab).
- The process is kept alive between requests, but you still don't pay for time between requests. The execution model and cost model of AWS Lambda does not change (Lambda is frozen between requests).
BREF_LOOP_MAXspecifies the number of HTTP requests handled before the PHP process is restarted (and the memory is cleared).
You can keep database connections persistent across requests to make your application even faster. To do so, set the
OCTANE_PERSIST_DATABASE_SESSIONS environment variable:
functions: web: handler: Bref\LaravelBridge\Http\OctaneHandler runtime: php-81 environment: BREF_LOOP_MAX: 250 OCTANE_PERSIST_DATABASE_SESSIONS: 1 # ...
Note that if you are using PostgreSQL (9.6 or newer), you need to set
idle_in_transaction_session_timeout (opens in a new tab) either in your RDS database's parameter group, or on a specific database itself.
ALTER DATABASE SET idle_in_transaction_session_timeout = '10000' -- 10 seconds in ms