使用Doctrine设置数据库连接超时时间

4

在Doctrine(对于MySQL)中是否可以设置连接超时?

我想将我的连接超时设置为5秒钟。

3个回答

6

根据您的 Symfony 标签,在 services.yaml 配置中为 doctrine dbal 指定驱动程序选项以设置连接超时。

如果您使用 mysqli 扩展:

doctrine:
  dbal:
    ...
    options:
        0: 5 // '0' is the value of 'MYSQLI_OPT_CONNECT_TIMEOUT'

对于基于PDO的驱动程序:

doctrine:
  dbal:
    ...
    options:
        2: 5 // '2' is the value of 'PDO::ATTR_TIMEOUT'

References:


1
如果您正在查找这个问题并使用 SQL Server: 我正在使用 SQL Server,而不是 MySQL,使用 PDO 驱动程序、Symfony 5 和 Doctrine ORM 2.7.4。
建议在 services.yaml 中使用 PDO 枚举值(如 this answer 所示)并不起作用;无论我使用什么值设置 PDO::ATTR_TIMEOUT,初始连接都会超时 30 秒。
相反,可以使用 LoginTimeout 值:
doctrine:
  dbal:
    ...
    options:
        LoginTimeout: 5

请注意,此处在 YAML 中设置的选项会传递到用于构建 $dsn$dnsOptions 数组中,在 PDOSqlsrv/Driver::_constructPdoDsn() 中使用,因此设置原始的 PDO 枚举值(例如链接答案中的2=5)可能不是您想要做的事情。

-3
也许你可以在脚本执行中使用类似 set_time_limit() 的函数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接