PHP manual-mysqli-connections-翻译
MySQL
服务器支持使用不同的传输层进行连接。 连接可以使用TCP / IP
,Unix
域套接字或Windows
命名管道。
主机名localhost
具有特殊的含义。它与Unix
域套接字绑定,所以不能使用主机名localhost
打开TCP / IP
连接,要想打开TCP/IP
的链接,只能使用127.0.0.1
.
Example #1 localhost
的特殊含义示例
1 |
<?php |
以上例程会输出:
1 |
Localhost via UNIX socket |
默认的连接参数
根据所使用的连接方法,可以省略各种参数。 如果未提供参数,扩展会尝试使用在PHP
配置文件中设置的默认值.
Example #2 设置默认值
1 |
mysqli.default_host=192.168.2.27 |
然后将生成的参数值传递给扩展使用的客户端库。 如果客户端库检测到空或未设置参数,则它可能默认使用库内置值。
内置连接库默认值
如果主机值未设置或为空,则客户端库将默认为 大专栏 PHP manual-mysqli-connections-翻译localhost
上的Unix
套接字连接。 如果套接字未设置或为空,并且请求了Unix
套接字连接,则尝试连接到/tmp/mysql.sock
上的默认套接字。
在Windows
系统上,主机名被客户端库解释为尝试打开基于Windows
命名管道的连接。 在这种情况下,套接字参数被解释为管道名称。 如果参数没有给定或空,则套接字(管道名称)默认为\.pipeMySQL
。
如果基于Windows
命名管道的连接或者基于Unix
域套接字的连接都没有建立,并且端口参数值也未设置,则库将默认使用端口3306。
mysqlnd
库和MySQL Client Library(libmysqlclient)
实现了相同的逻辑来确定默认值。
连接选项
连接选项可用于在连接时执行的set init
命令,或用于请求使用某个字符集。 必须在建立网络连接之前,设置连接选项。
要设置连接选项,连接操作必须分三步执行:使用mysqli_init()
创建一个连接句柄,使用mysqli_options()
设置所请求的选项,并建立与mysqli_real_connect()
的网络连接。
连接池
mysqli
扩展支持持久数据库连接,这是一种特殊的池化连接。 默认情况下,脚本打开的每个数据库连接都由用户在运行时显式关闭或在脚本结束时自动释放。 持久连接不是。 相反,连接会被放入一个池中,如果之后有使用相同的用户名,密码,套接字,端口和默认数据库连接到同一台服务器的情况,该连接就会被使用。 此种方法减少了连接的开销。
每个PHP
进程都使用自己的mysqli
连接池。 根据Web
服务器部署模型,PHP
进程可能会提供一个或多个请求。 因此,连接池中的连接可能会在之后被一个或多个脚本使用。
持久化连接
如果连接池中没有符合当前需要的连接,则mysqli
将打开一个新的连接。 可以使用PHP
指令mysqli.allow_persistent
来启用和禁用持久连接功能。 脚本打开的连接总数可以通过mysqli.max_links
进行限制。 每个PHP
进程的持久连接的最大数量可以通过mysqli.max_persistent
进行限制。 请注意,Web
服务器可能会产生许多PHP
进程。
持久连接的一个常见的抱怨是,它们的状态在重新使用之前不被重置。 例如,打开和未完成的事务不会自动回滚。 而且,将连接进入池并重新使用之间发生的授权更改也没有反映出来。 这可能被视为不必要的副作用。 相反,持久的名字可能被理解为是国家坚持的承诺(这一句不知道怎么翻了。没看懂)。
mysqli
扩展同时支持对持久连接的解释:状态持续,或在重新使用前重置状态。 默认值是重置。 在持续连接被重用之前,mysqli
扩展隐式调用mysqli_change_user()
来重置状态。 持久连接对用户来说似乎刚刚打开。 之前的使用并不会影响当前。
mysqli_change_user()
函数是一个昂贵的操作。 为获得最佳性能,用户可能希望对MYSQLI_NO_CHANGE_USER_ON_PCONNECT
进行设置之后重新编译扩展。
用户可以选择提升安全性或者性能。 两者都是有效的优化目标。 为了易于使用,牺牲性能,而将安全性设为默认。
PHP manual-mysqli-connections-翻译的更多相关文章
- Manual——Test (翻译1)
LTE Manual ——Logging(翻译) (本文为个人学习笔记,如有不当的地方,欢迎指正!) 1.17.3 Testing framework(测试框架) ns-3 包含一个仿真核心引擎. ...
- LTE Manual ——Logging(翻译)
LTE Manual ——Logging(翻译) (本文为个人学习笔记,如有不当的地方,欢迎指正!) 9 Logging ns-3 日志功能可以用于监测或调试仿真程序的进展.日志输出可以通过 ma ...
- Windows使用MySQL数据库管理系统中文乱码问题
声明:本文关于MySQL中文乱码问题的解决方案均基于Windows 10操作系统,如果是Linux系统会有较多不适用之处,请谨慎参考. 一.MySQL中文乱码情况 1. sqlDevelper远程登陆 ...
- gcc都做了什么优化
直接上程序: setjmp和longjmp是处理函数嵌套调用的,goto语句不能跨越函数,所以不选择goto. #include <setjmp.h> int setjmp(jmp_buf ...
- 【Android】给Android Studio设置代理
先打开我们的Android Studio,点击工具栏的file下的settings,如下图 之后再搜索框上面输入Proxy,然后按第四步提示点击,如下图 之后就进入了设置代理的界面了,如下图 默认情况 ...
- android studio设置代理更新
我们都知道Android Studio是基于IDEA开发的,而我们写的每一个程序又都是有Gradle构建的,Gradle的优点可以说是很多,被很多程序员夸得没边,但是它有一个特点还是值得我们注意的.我 ...
- 一文带你了解 Spring 5.0 WebFlux 应用场景
一.什么是 Spring WebFlux 下图截自 Spring Boot 官方网站: 结合上图,在了解 Spring WebFlux 之前,我们先来对比说说什么是 Spring MVC,这更有益我们 ...
- Spring Boot 2.0 WebFlux 教程 (一) | 入门篇
目录 一.什么是 Spring WebFlux 二.WebFlux 的优势&提升性能? 三.WebFlux 应用场景 四.选 WebFlux 还是 Spring MVC? 五.异同点 六.简单 ...
- Android Studio设置代理,解决检查更新gradle信息的问题
Android Studio是基于JetBrains公司的IDEA开发的,Android Studio里的项目都是由Gradle构建的,Gradle集合了Ant和Maven的优点,又解决了他们的缺点, ...
- 【MVC】Spring WebFlux
一.什么是 Spring WebFlux 下图截自 Spring Boot 官方网站: 结合上图,在了解 Spring WebFlux 之前,我们先来对比说说什么是 Spring MVC,这更有益我们 ...
随机推荐
- JS中的7种设计模式
第九章Refactoring to OOP Patterns 重构为OOP模式 7种设计模式: 1,模版方法模式(template method) 2,策略模式(strategy) 3,状态模式(st ...
- 多对多的三种创建方式-forms相关组件-钩子函数-cookie与session
多对多的三种创建方式 1.全自动(推荐使用的**) 优势:第三张可以任意的扩展字段 缺点:ORM查询不方便,如果后续字段增加更改时不便添加修改 manyToManyField创建的第三张表属于虚拟的, ...
- [JSOI2019]节日庆典(Z-algorithm)
要想让一个位置作为最小循环,其必须是最小后缀,然后一个字符串的最小后缀不超过O(logn)个,于是维护备选集合即可. 然而要在O(n)复杂度求解,需要求出原串后缀与原串的LCP长度,需要用Z-algo ...
- python运算符的优先级顺序
最近开始学习python,听大家说python很强大,可以作为脚本语言,支持面向对象.面向过程编程,兼具编译性和解释性的一门动态语言.作为一名程序员有必要掌握这一门强大的"胶水语言" ...
- centos 7 安装及配置vsftpd
一.防火墙开放21端口 二.创建FTP用户,创建完用户后在/etc/passwd里是这样呈现的:ftpuser:x:1008:1008::/var/www/html:/sbin/nologin 三.y ...
- 量化投资_TB交易开拓者A函数和Q函数详解
//////////////////A函数详解/////////////// //A函数主要在端口上进行下单操作//////////////// A_AccountID说明 返回当前公式应用的交易帐户 ...
- Linux centos 下安装nginx
一.安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool openssl opens ...
- 七、linux-mysql下mysql增量备份与恢复
1.备份的意义 运维工作:保护公司的数据 . 网站7*24小时服务 但相当来说,数据更加重要,而数据最核心的就是数据库数据,所以数据库的备份和恢复就显得十分重要. 2.备份的几个参数 mys ...
- 使用命令安装laravel 项目
cp .env.example .env 拷贝.env 文件 php artisan key:generate 生成秘钥 php artisan migrate 生成数据表 composer ...
- iOS火焰动画效果、图文混排框架、StackView效果、偏好设置、底部手势等源码
iOS精选源码 高性能图文混排框架,构架顺滑的iOS应用. 使用OpenGLE覆盖阿尔法通道视频动画播放器视图. 可选最大日期截至当日日期的日期轮选器ChooseDatePicker 简单轻量的图片浏 ...