Overview
在本指南中,您可以了解连接、身份验证和驱动程序选项,以及如何在 Laravel 应用程序的数据库连接配置中指定这些选项。 连接选项将传递到 MongoDB PHP 库,该库管理数据库连接。
要学习;了解有关MongoDB PHP库的更多信息,请参阅MongoDB PHP库文档。
本指南涵盖以下主题:
连接和身份验证选项
通过以下部分,了解如何将常用连接和身份验证选项添加到配置文件中:
添加连接和身份验证选项
您可以使用以下方法之一在 Laravel Web 应用程序的config/database.php配置文件中指定连接或身份验证选项:
将设置和值作为数组项添加到
options数组项中。将设置和值作为查询string参数附加到
dsn数组项中指定的连接string上。
要在options数组中指定选项,请将其名称和值添加为数组项,如下例所示:
'connections' => [ 'mongodb' => [ 'dsn' => 'mongodb+srv://mongodb0.example.com/', 'driver' => 'mongodb', 'database' => 'sample_mflix', 'options' => [ 'appName' => 'myLaravelApp', 'compressors' => 'zlib', 'zlibCompressionLevel' => 7, ], ], ],
要将选项指定为连接string中的参数,请使用以下查询string语法格式:
添加问号字符
?,以将主机信息与参数分隔开。通过将选项的格式设置为
<option>=<value>来添加选项。在每个选项和值对之间插入与符号
&进行分隔。
以下设置示例显示了连接string参数语法:
'dsn' => 'mongodb+srv://mongodb0.example.com/?appName=myLaravelApp&compressors=zlib',
选项说明
下表描述了连接和身份验证选项及其默认值的列表:
选项名称 | 接受的值 | 默认值 | 说明 |
|---|---|---|---|
appName | 字符串 | 无 | 指定 MongoDB PHP 库作为握手的一部分发送给 MongoDB 部署的应用程序名称。 |
authMechanism | 字符串 | 无 | |
authMechanismProperties | 字符串 | 无 | 指定更多与 |
authSource | 字符串 | 查看说明 | 指定用于身份验证的数据库。 |
compressors | 以逗号分隔的字符串列表 | 无 | 指定 MongoDB PHP 库用于按指定顺序减少 MongoDB 与应用程序之间传递的网络数据量的数据压缩器。 |
connectTimeoutMS | Non-negative integer |
| 指定尝试连接到服务器时传递给每个底层 TCP 流的连接超时时间(以毫秒为单位)。 |
directConnection | 布尔 |
| 指定是否直接连接到单个主机,而不是发现并连接到集群中的所有服务器。 要了解有关此设置的更多信息,请参阅连接指南中的直接连接。 |
heartbeatFrequencyMS | 整数大于或等于 |
| 指定每个监控线程在执行服务器检查之间的等待时间(以毫秒为单位)。 |
journal | 布尔 |
| 请求确认操作已传播到磁盘上日志。 |
localThresholdMS | Non-negative integer |
| 指定驱动程序与服务器之间的平均往返时间可以持续的毫秒数,与所有适合服务器的最短往返时间相比。 |
maxStalenessSeconds |
|
| 指定从主节点开始的最大延迟时间(以秒为单位),在此时间内,可以将从节点(secondary node from replica set)视为可用于给定操作。 |
readConcernLevel | 字符串 | 无 | |
readPreference | 字符串 |
| |
readPreferenceTags | 以逗号分隔的键值对列表 | 无 | 指定考虑对哪些副本集成员进行操作。 此键的每个实例都是一个单独的标签集。 驱动程序会检查每个标签集,直到找到带有每个标签的一个或多个服务器。 |
replicaSet | 字符串 | 无 | 指定 MongoDB PHP 库连接到的副本集的名称。 |
retryReads | 布尔 |
| 指定 MongoDB PHP 库在操作失败时是否重试读取操作。 |
serverSelectionTimeoutMS | Non-negative integer |
| 指定 MongoDB PHP 库在超时之前等待为操作选择服务器的时间(以毫秒为单位)。 |
TLS | 布尔 |
| 指定 MongoDB PHP 库在与服务器的连接中使用的 TLS 配置。 |
tlsAllowInvalidCertificates | 布尔 |
| 指定如果服务器提供无效证书,MongoDB PHP 库是否返回错误。 |
tlsCAFile | 字符串 | 查看说明 | 指定 MongoDB PHP 库用于 TLS 的证书权威 (CA) 文件的路径。 |
tlsCertificateKeyFile | 字符串 | 无 | 指定 MongoDB PHP 库向服务器呈现的证书文件的路径,以验证其身份。 |
tlsInsecure | 布尔 |
| 指定如果服务器提供无效证书,MongoDB PHP 库是否返回错误。 |
w | 非负整数或字符串 | 无 | 请求确认操作已传播到特定数量或类型的服务器。 |
wtimeoutMS | Non-negative integer | 无超时 | 指定写关注的时间限制(以毫秒为单位)。 如果操作未在时限内传播到请求的级别,MongoDB PHP 库将引发错误。 |
zlibCompressionLevel | 介于 |
| 指定使用 |
要查看连接选项的完整列表,请参阅 stringMongoDB Server手册中连接字符串指南的 连接 选项 部分。从页面右侧的Select your language下拉菜单中选择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部分。