本文目录一览:
- 1、修改php.ini如何实现Mysql导入数据库文件最大限制的修改方法
- 2、mac 怎么配置php.ini 连接mysql
- 3、在WINDOWS 下PHP.INI的路径以及如何激活mysql扩展库
- 4、php.ini怎么扩展mysql
修改php.ini如何实现Mysql导入数据库文件最大限制的修改方法
非root用户运行MySQL,当MySQL配置比较高时,MySQL运行中生效的参数值与配置的值不一样,所以具体分析一下MySQL是怎么调整这些参数值的。 这篇文章的目的是为了说明在系统资源不够的情况下,MySQL 是怎么调整者三个参数的。说明此文涉及到三个参数open_files_limit、 max_connections、 table_open_cache。与这三个参数相关的系统资源是打开文件数限制,即文件描述符(fd)限制。系统参数与文件描述符的关系 - max_connection fd : 每一个MySQL connection 都需要一个文件描述符;- table_open_cache fd 打开一张表至少需要一个 文件描述符,如打开MyISAM需要两个fd ;- 系统最大打开文件数可以通过 ulimit -n查看。MySQL调整参数的方式
根据配置(三个参数的配置值或默认值)计算 request_open_files(需要的文件描述符);
2.获取有效的系统的限制值effective_open_files; 3.根据effective_open_files调整request_open_files; 4.根据调整后的request_open_files,计算实际生效的参数值(show variables 可查看参数值)。计算request_open_filesrequest_open_files有三个计算公式:1. // 最大连接数+同时打开的表的最大数量+其他(各种日志等等)2. limit_1= max_connections+table_cache_size * 2 + 10;3. 4. //假设平均每个连接打开的表的数量(2-4)5. //源码中是这么写的:6. //We are trying to allocate no less than 7. // max_connections*5 file handles8. limit_2= max_connections * 5;9. 10. //mysql 默认的默认是500011. limit_3= open_files_limit ? open_files_limit : 5000;12. 13. 所以open_files_limit期待的最低14. request_open_files= max(limit_1,limit_2,limit_3);计算effective_open_files:MySQL 的思路:
在有限值的的范围内MySQL 尽量将effective_open_files的值设大。
修正request_open_files
requested_open_files= min(effective_open_files, request_open_files)
重新计算参数值
修正open_files_limit
open_files_limit = effective_open_files
修正max_connections
max_connections 根据 request_open_files 来做修正。1. limit = requested_open_files - 10 - TABLE_OPEN_CACHE_MIN * 2;
如果配置的max_connections值大于limit,则将max_connections 的值修正为limit
其他情况下 max_connections 保留配置值
修正table_cache_size
table_cache_size 会根据 request_open_files 来做修正1. // mysql table_cache_size 最小值,4002. limit1 = TABLE_OPEN_CACHE_MIN3. // 根据 requested_open_files 计算4. limit2 = (requested_open_files - 10 - max_connections) / 25. limit = max(limit1,limt2);
如果配置的table_cache_size 值大于limit,则将 table_cache_size 的值修正为limit
其他情况下table_cache_size 保留配置值
举例
以下用例在非 root 用户下运行
参数设置:
//mysql
max_connections = 500
table_open_cache = 999
//ulimit -n
1500
生效的值:
open_files_limit = 1500 max_connections = min[(1500 - 10 - 800),500] = 500
table_open_cache = ( 1500 - 10 - 500) / 2 =495
mac 怎么配置php.ini 连接mysql
当尝试在console下运行php脚本时却提示pdo连接mysql.sock时出错
PHP Error[2]: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock)
但是查过了MAMP自带的php5.2和php5.3的php.ini发现里面的几处默认mysql连接文件default_socket设置都没有问题,于是google之。发现原来命令行的php是用了MAC OS自带的php,需要修改MAC OS自带的php.ini。 具体步骤如下:
如果你已经有/private/etc/php.ini就不需要再拷贝一份php.ini.default出来了。
cd /private/etc/
sudo cp php.ini.default php.ini
sudo vi php.ini
把php.ini里面所有的default_socket都改成MAMP的mysql.sock的正确位置即可。
pdo_mysql.default_socket=/Applications/MAMP/tmp/mysql/mysql.sock
mysql.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock
mysqli.default_socket = /Applications/MAMP/tmp/mysql/mysql.sock
在WINDOWS 下PHP.INI的路径以及如何激活mysql扩展库
第一个原因是由于系统所读取的php.ini文件与你当时修改的php.ini文件不一致造成的
1、 可以通过phpinfo()的Configuration File (php.ini) Path选项查看当前PHP服务器读取的是哪一个php.ini
2、 如果你要更改php.ini的文件存取位置,可参考php.ini的搜索顺序,如下所示:
a)�0�2�0�2�0�2�0�2�0�2�0�2 SAPI 模块所指定的位置(Apache 2 中的 PHPIniDir 指令,CGI 和 CLI 中的 -c 命令行选项,NSAPI 中的 php_ini 参数,THTTPD 中的 PHP_INI_PATH 环境变量)
b)�0�2�0�2�0�2�0�2�0�2�0�2 HKEY_LOCAL_MACHINESOFTWAREPHPIniFilePath(Windows 注册表位置)
c)�0�2�0�2�0�2�0�2�0�2 PHPRC 环境变量
d)�0�2�0�2�0�2�0�2�0�2�0�2 当前工作目录(对于 CLI)
e)�0�2�0�2�0�2�0�2�0�2�0�2 web 服务器目录(对于 SAPI 模块)或 PHP 所在目录(Windows 下其它情况)
f)�0�2�0�2�0�2�0�2�0�2�0�2 Windows 目录(C:windows 或 C:winnt),或 --with-config-file-path 编译时选项指定的位置
3、 一般做法:通过设置PHPRC 环境变量,
a)�0�2�0�2�0�2�0�2�0�2�0�2 操作:右击我的电脑-属性-高级-环境变量
b)�0�2�0�2�0�2�0�2�0�2�0�2 在系统变量下新建一个“变量名为PHPRC�0�2�0�2 ,变量值为你的php.ini文件所地文件路径”的环境变量第二个原因是:PHP没有找到相应的扩展库
1、 查看PHP找到的扩展库位置:在phpinfo()的extension_dir选项可以看到
2、 在php.ini更改extension_dir文件第三个原因:没有完全重启IIS
1、 对php.ini的修改必须完全重启IIS才能起作用,而不能只是对当前站点进行重启。
A:在PHP5.0以上版本,MySQL 默认未启用,因此需要咱们进行手工激活。
1、 在PHP运行MySql,必须在 php.ini 中激活 php_mysql.dll 动态连接库,另外还需要访问 MySQL 客户端连接库即libmysql.dll文件
2、 可以通过php.ini中的extension激活 php_mysql.dll 动态连接库;而libmysql.dll文件必须放在Windows 的系统路径 PATH才能访问,可以通过把libmysql.dll复制到system32目录下,也可以在PATH环境变量中新增一个路径。
3、 建议做法:通过设置PATH,方便以后的php升级,在系统环境变量中的PATH后增加“libmysql.dll”所在的文件夹即可。记得通过“;”号隔开
4、 [案例]最近,服务器总是找不到MySql扩展库,导致程序无法运行。因此,把所有文件删除后重新配置PHP服务器。但最后在安装MySql的时候,却始终无法激活MySql扩展库。
在phpinfo()中找到的信息如下:
PATH:c:php
PHPRC:C:php
extension_dir:c:phpext
另外,我测试了将其它的库激活,如msql、gd2、XML,在phpinfo()都可以正常显示
证明PHP能找到php_mysql.dll 动态连接库,而MySql的运行的另一个条件是能够讯问MySQL 客户端连接库即libmysql.dll文件,看来问题就在这里了。
php.ini怎么扩展mysql
Mysqli是php5之后才有的功能,没有开启扩展的朋友可以打开您的php.ini的配置文件。
查找下面的语句:;extension=php_mysqli.dll将其修改为:extension=php_mysqli.dll即可。
相对于mysql有很多新的特性和优势
(1)支持本地绑定、准备(prepare)等语法
(2)执行sql语句的错误代码
(3)同时执行多个sql
(4)另外提供了面向对象的调用接口的方法。
下面一一用php实例进行mysqli数据库连接!
使用方法一:使用传统的面向过程的方法
php代码如下:
?php
$connect = mysqli_connect('localhost','root','','volunteer') or die('Unale to connect');
$sql = "select * from vol_msg";
$result = mysqli_query($connect,$sql);
while($row = mysqli_fetch_row($result)){
echo $row[0];
}
?
使用方法二:使用面向对象的方法调用接口(推荐使用)
看php代码如下:
复制代码 代码如下:
?php
//创建对象并打开连接,最后一个参数是选择的数据库名称
$mysqli = new mysqli('localhost','root','','volunteer');
//检查连接是否成功
if (mysqli_connect_errno()){
//注意mysqli_connect_error()新特性
die('Unable to connect!'). mysqli_connect_error();
}
$sql = "select * from vol_msg";
//执行sql语句,完全面向对象的
$result = $mysqli-query($sql);
while($row = $result-fetch_array()){
echo $row[0];
}
?
以上两个php实例运行的结果完全相同,可以清楚的看到使用mysqli类对象构建数据库连接的优势!
插入和修改记录我就不用讲了,只要更改一下sql语句就行,下一篇我会讲prepare接口特性!