本文目錄一覽:
- 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_MACHINE\SOFTWARE\PHP\IniFilePath(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:\php\ext\
另外,我測試了將其它的庫激活,如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接口特性!
原創文章,作者:VWMM,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/133962.html