用PDO往MYSQL裏面插入數據的話。插入五千條大概140多秒時間,插入1萬條大概260多秒時間

代碼

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?php
global $begin;
global $end;
$begin = microtime(TRUE);
try {

$dsn = "mysql:host=localhost;dbname=kaixin";
$db = new PDO($dsn, 'root', '111');
$db->exec("set names 'utf8'");//默認編碼
$db->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_EXCEPTION);
for($i=1; $i<5000; $i++){
$sql = "insert into `article` (`title`, `content`, `time`, `author`, `ip`) value ('文章標題".$i."', '內容".$i."',

'1227237892','kaixin','127.0.0.1')";
$db->exec($sql);
}
$end = microtime(TRUE);

$time = $end-$begin;
echo "執行了".$time."s";
} catch (Exception $e) {
echo "Failed: " . $e->getMessage();
}
?>

執行這段代碼,只能插入大概1000條左右的數據,這樣頁面就不執行了。
測試頁面的執行時間大概都是29秒左右,也就是頁面的最大執行時間 是30秒。

知道set_time_limit函數,可以設置頁面執行時間。

set_time_limit函數用法如下:

本函式用來設定該頁最久執行時間。內定值是 30 秒,在 php.ini 中的 max_execution_time 變數設定,若設定爲 0 則不限定最久時間。當執行到該函數時,纔開

始計算。例如,若內定是 30 秒,而在執行到該函數前已執行了 25 秒,而用本函式改爲 20 秒,則該頁面最長執行時間爲 45 秒。

發現頁面執行時間還是29秒左右,沒有起作用。

看到網上有人說,php.ini裏的safe_mode如果爲on,本函數不執行。查了我的php.in裏的safe_mode=off。

我又試着把set_time_limit(0);加入到for循環裏。


也 沒有起作用。

最後在網上查到,有人說,“set_time_limit函數最好是在linux下執行,windows執行可能也無效”。徹底對這個函數失去信心 了,估計是因爲我是windows系統的原因。

只能修改php.ini裏的max_execution_time = 30了。這個默認是30秒,我修改爲max_execution_time = 300.重新啓動apache服務器。

結果執行時間爲140秒左右,5000條數據終於插入了。

看來,windows下這個頁面執行時間還是在php.ini裏控制,修改max_execution_time。

從上面的實例也可以得出,如果用PDO往MYSQL裏面插入數據的話。插入五千條大概140多秒時間,插入1萬條大概260多秒時間。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章