连接选项
概述
在本指南中,您可以了解连接、身份验证和驱动器选项,以及如何在您的 Laravel 应用程序的数据库连接配置中指定它们。连接选项传递给 MongoDB PHP 库,该库管理您的数据库连接。
要了解更多关于 MongoDB PHP 库的信息,请参阅MongoDB PHP 库文档.
本指南涵盖以下主题
连接和身份验证选项
以下章节将介绍如何将常见的连接和身份验证选项添加到配置文件中
添加连接和身份验证选项
您可以在 Laravel Web 应用的config/database.php
配置文件中使用以下方法之一来指定连接或身份验证选项
在
options
数组项中,将设置和值作为数组项添加。在
dsn
数组项指定的连接字符串上追加设置和值作为查询字符串参数。
要指定 options
数组中的选项,请添加其名称和值作为数组项,如下例所示
'connections' => [ 'mongodb' => [ 'dsn' => 'mongodb+srv://mongodb0.example.com/', 'driver' => 'mongodb', 'database' => 'sample_mflix', 'options' => [ 'appName' => 'myLaravelApp', 'compressors' => 'zlib', 'zlibCompressionLevel' => 7, ], ], ],
要将选项作为参数添加到连接字符串中,请使用以下查询字符串语法格式:
在主机信息和参数之间添加问号字符,
?
。通过格式化它们为
<option>=<value>
来添加选项。在选项和值对之间插入与符号字符,
&
,以分隔它们。
以下设置示例显示了连接字符串参数的语法
'dsn' => 'mongodb+srv://mongodb0.example.com/?appName=myLaravelApp&compressors=zlib',
选项描述
以下表格描述了连接和认证选项及其默认值
选项名称 | 可接受值 | 默认值 | 描述 |
---|---|---|---|
appName | 字符串 | None | 指定MongoDB PHP库在握手过程中发送给MongoDB部署的应用程序名称。 指定 appName 可以帮助您在服务器日志中识别与该应用程序相关的活动。 |
authMechanism | 字符串 | None | 指定要使用的认证机制。如果您不指定此选项,驱动程序将使用默认的认证机制。有关更多信息,请参阅服务器手册中的认证。 |
authMechanismProperties | 字符串 | None | 指定与 authMechanism 选项中设置的认证机制相关的更多属性。 |
authSource | 字符串 | 参见描述 | 指定用于认证的数据库。 对于基于SCRAM的认证机制,此选项默认为 admin ,对于MONGODB-X509 机制,为$external ,对于PLAIN 机制,为数据库名称或$external 。 |
compressors | 字符串列表,以逗号分隔 | None | 指定MongoDB PHP库在指定顺序中使用的压缩程序,以减少MongoDB和您的应用程序之间通过网络传输的数据量。 |
connectTimeoutMS | 非负整数 | 10000 (10秒) | 指定连接超时时间(以毫秒为单位),在尝试连接到服务器时传递给每个底层的TCP流。 |
directConnection | 布尔值 | false | 指定是否直接连接到单个主机,而不是发现并连接到集群中的所有服务器。有关此设置的更多信息,请参阅在连接指南中的“直接连接”。 |
heartbeatFrequencyMS | 大于或等于 500 的整数 | 10000 (10秒) | 指定每个监控线程在执行服务器检查之间等待的时间(毫秒)。 |
journal | 布尔值 | false | 请求确认操作已传播到磁盘日志中。 |
localThresholdMS | 非负整数 | 15 | 指定与所有合适服务器中最短往返时间相比,驱动程序和服务器之间平均往返时间可以持续的时间(毫秒)。 0 的值表示没有延迟窗口,因此只有平均往返时间最低的服务器才有资格。 |
maxIdleTimeMS | 非负整数 | 0 | 指定连接可以在连接池中保持空闲的时间(毫秒),直到服务器关闭它。 0 的值表示客户端不会关闭空闲连接。 |
maxStalenessSeconds | -1 ,或任何大于或等于90 的整数 | -1 | 指定从属节点在给定操作中可以落后主节点最大延迟时间(秒)。 此选项的值必须至少为 90 ,否则操作会引发错误。值为-1 表示没有最大延迟。 |
maxPoolSize | 非负整数 | 10 | 指定MongoDB PHP库可以为特定服务器创建的连接池中连接的最大数量。 如果尝试操作时, maxPoolSize 连接已被借出,则操作将等待正在进行的操作完成并将连接返回到池中。 |
minPoolSize | 非负整数 | 0 | 指定在给定时间内服务器连接池中可用的连接的最小数量。 如果池中的连接少于 minPoolSize ,则服务器将在后台添加连接,直到达到minPoolSize 的值。 |
readConcernLevel | 字符串 | None | 指定MongoDB PHP库执行的操作的默认读取关注级别。有关更多信息,请参阅服务器手册中的读取关注。 |
readPreference | 字符串 | primary | 指定MongoDB PHP库如何将读取操作路由到副本集成员。有关更多信息,请参阅服务器手册中的读取偏好。 |
readPreferenceTags | 逗号分隔的关键字值对列表 | None | 指定要考虑的操作的副本集成员。此键的每个实例都是一个单独的标签集。驱动程序会检查每个标签集,直到找到一个或多个具有每个标签的服务器。 |
replicaSet | 字符串 | None | 指定MongoDB PHP库连接到的副本集的名称。 |
retryReads | 布尔值 | true | 指定MongoDB PHP库是否在操作失败时重试读取操作。 |
serverSelectionTimeoutMS | 非负整数 | 30000 (30秒) | 指定MongoDB PHP库在超时之前等待选择服务器进行操作的时间(毫秒)。 |
tls | 布尔值 | false | 指定MongoDB PHP库在与服务器连接时使用的TLS配置。 默认情况下,TLS是关闭的。 |
tlsAllowInvalidCertificates | 布尔值 | false | 指定如果服务器显示无效证书,MongoDB PHP库是否返回错误。 我们建议仅在测试环境中将此选项设置为 true ,以避免在应用程序中创建安全漏洞。 |
tlsCAFile | 字符串 | 参见描述 | 指定 MongoDB PHP 库用于 TLS 的证书颁发机构 (CA) 文件的路径。 如果不指定此选项,驱动程序将使用来自 webpki-roots crate 的 Mozilla 根证书。 |
tlsCertificateKeyFile | 字符串 | None | 指定 MongoDB PHP 库向服务器提供的证书文件以验证其身份。 如果不设置此选项,MongoDB PHP 库不会尝试与服务器验证其身份。 |
tlsInsecure | 布尔值 | false | 指定如果服务器显示无效证书,MongoDB PHP库是否返回错误。 我们建议仅在测试环境中将此选项设置为 true ,以避免在应用程序中创建安全漏洞。 |
非负整数或字符串 | 请求确认操作已传播到特定数量或类型的服务器。 | None | 有关更多信息,请参阅服务器手册中的 写关注 部分。 十 |
wTimeoutMS | 非负整数 | 无超时 | 指定写关注的时间限制,单位为毫秒。如果操作在时间限制内未传播到请求的级别,MongoDB PHP 库将引发错误。 |
zlibCompressionLevel | 介于 -1 和 9 之间的整数(包括) | -1 | 指定使用该压缩程序时 zlib 压缩的级别字段。 将值设置为 -1 选择默认压缩级别(6 )。将值设置为 0 指定不压缩,将值设置为 9 指定最大压缩。 |
要查看连接选项的完整列表,请参阅服务器手册中连接字符串指南的 连接字符串选项 部分。从页面右侧的 选择您的语言 下拉菜单中选择 PHP
。选择您的语言 下拉菜单。
驱动程序连接选项
驱动程序选项修改 MongoDB PHP 库的行为,该库管理 Laravel 应用程序和 MongoDB 之间的连接和所有操作。
您可以在 Laravel Web 应用的 config/database.php
配置文件中指定驱动程序选项。要添加驱动程序选项,请将设置和值作为数组项添加到 driver_options
数组项中,如下例所示
'connections' => [ 'mongodb' => [ 'dsn' => 'mongodb+srv://mongodb0.example.com/', 'driver' => 'mongodb', 'database' => 'sample_mflix', 'driver_options' => [ 'serverApi' => 1, 'allow_invalid_hostname' => false, ], ], ]
请参阅 MongoDB PHP 库文档中的 $driverOptions: array 部分,获取驱动程序选项列表。