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,这更有益我们 ...
随机推荐
- Qt QString 和 LPCWSTR 的相互转换
在windosw 编程中,常用到LPCWSTR 变量,QT中最常用到QString,下面提供QString和LPCWSTR 相互转换的方法 LPWSTR 转换成QString LPCWSTR str; ...
- 使用XAMPP集成开发环境安装Apache、PHP的配置说明
一.安装XAMPP 双击安装包xamppinstaller.exe,可完成XAMPP的安装,与其他软件安装并无区别. 二.配置Apache端口,使用其可以正确启动 点击Start,启动Apache时可 ...
- MFC的程序,不想显示窗口,任务栏里也不显示
在dialog的oninitdialog里设置如下属性,很简单,网上一些乱七八糟的做法,一行代码就能搞定啊 SetWindowPos(&CWnd::wndNoTopMost,0,0,0,0,S ...
- kaggle注册获取数据
安装谷歌访问助手,主要参考下面的作者写的 https://segmentfault.com/a/1190000020548973?utm_source=tag-newest 安装之后,打开蓝灯或其他翻 ...
- rsync配置文件
vim /etc/rsyncd.conf motd file = /etc/rsyncd.motd #设置服务器信息提示文件,在该文件中编写提示信息 transfer logging = yes #开 ...
- python_数据类型_总结
- windows 环境下Maven私服搭建
使用Nexus.3.11在Windows环境上搭建1.下载nexus.3.11.zip包https://www.sonatype.com/download-oss-sonatype 下载下来之后,进行 ...
- spring 方法注入、方法替换
spring 提供了很多的注入方式,set注入.构造注入.p命名空间.c命名空间.字段注入等等,这些没啥可说的了. 方法注入 因为开发时我需要spring管理一个实例,但是这个实例并非单例,应该每一次 ...
- i春秋web作业2.25
Web安全工程师(入门班) [全国线上入门班53期]课后作业 2020-2-25 DorinXL 请思考:XXE漏洞的原理的是什么?有哪些危害? XXE漏洞全称XML External Ent ...
- mysql中datetime时间转字符串(避免java层映射为数字串)
-- in_date datetime NULLDATE_FORMAT(ls.`in_date`,'%Y-%m-%d %T')AS create_time