同时使用 Laravel Sanctum 和 Octane 时出现超时问题

问题描述 投票:0回答:1

我正在尝试迁移到 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 数据库。为什么它可以解决问题,我可以在不降低性能的情况下以不同的方式解决它吗?

laravel laravel-sanctum laravel-11 laravel-octane
1个回答
0
投票

必须使用 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 的需要设计为无状态?

© www.soinside.com 2019 - 2024. All rights reserved.