我正在尝试迁移到 Laravel Octane。
我使用 Sanctum (React SPA) 中基于 cookie 的会话身份验证,并使用 Laravel 作为 API。
我尝试使用 Swoole 设置 Octane,这导致了很多奇怪的 408 超时问题,并且还尝试使用 FrankenPHP 和 Roadrunner,这也导致了超时问题。
我没有找到任何有关 Sanctum 和 Octane 合作的信息。我主要担心是因为我使用基于 cookie 的身份验证。
编辑:
我注意到“DisconnectFromDatabases”未注释掉解决了 FrankenPHP 和 Roadrunner 的问题(没有再次尝试 Swoole):
辛烷.php:
OperationTerminated::class => [
FlushOnce::class,
FlushTemporaryContainerInstances::class,
DisconnectFromDatabases::class
// CollectGarbage::class,
],
但它会降低性能。我使用的是supabase 数据库。为什么它可以解决问题,我可以在不降低性能的情况下以不同的方式解决它吗?
必须使用 env DB_PORT 6543 将 Supebase 数据库模式从会话更改为事务,并且必须在 database.php 中添加 PDO 模拟,因为如果没有这样做,我会遇到 PDO 错误:
'pgsql' => [
'driver' => 'pgsql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'prefix_indexes' => true,
'schema' => 'public',
'sslmode' => 'prefer',
'options' => [
PDO::ATTR_EMULATE_PREPARES => true
],
],
“DisconnectFromDatabases::class”可以再次注释掉(默认设置)。这将请求持续时间缩短了一半!
我正在使用 Roadrunner,与 heroku 配合良好。
仍然好奇 Sanctum 和 Octance 是否会导致此设置中出现任何问题,例如一个用户看到另一个用户的数据? Sanctum 是否按照 Octane 的需要设计为无状态?