set_time_limit does not take effect or is an invalid solution
<?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); // by bbs.it-home.org $time = $end-$begin; echo "执行了".$time."s"; } catch (Exception $e) { echo "Failed: " . $e->getMessage(); } ?>
When executing this code, only about 1000 pieces of data can be inserted, so the page will not be executed. The execution time of the test page is about 29 seconds, which means the maximum execution time of the page is 30 seconds.
Knowing the set_time_limit function, you can set the page execution time.
The set_time_limit function is used as follows:
This function is used to set the longest execution time of the page. The default value is 30 seconds, set by the max_execution_time variable in php.ini. If set to 0, the maximum time is not limited. When this function is executed, the calculation starts. For example, if the default is 30 seconds, and 25 seconds have been executed before this function is executed, and this function is used to change it to 20 seconds, the maximum execution time of the page will be 45 seconds.
Add this set_time_limit function to the program,
found that the page execution time is still about 29 seconds, which does not work.
I saw someone online saying that if safe_mode in php.ini is on, this function will not be executed. I checked safe_mode=off in my php.in.
Try adding set_time_limit(0); to the for loop.
<?php ... for($i=1; $i<5000; $i++){ set_time_limit(0); $sql = "insert into `article` (`title`, `content`, `time`, `author`, `ip`) value ('文章标题".$i."', '内容".$i."', <?php set_time_limit(0); global $begin; global $end; $begin = microtime(TRUE); ... ?> '1227237892','kaixin','127.0.0.1')"; $db->exec($sql); } ... ?>
didn’t work either. Finally, I found on the Internet that someone said, "The set_time_limit function is best executed under Linux, and it may not be effective when executed under Windows." I have completely lost confidence in this function, probably because I am running a Windows system.
You can only modify max_execution_time = 30 in php.ini. The default is 30 seconds, I changed it to max_execution_time = 300. Restart the apache server. As a result, the execution time was about 140 seconds, and 5,000 pieces of data were finally inserted. It seems that the execution time of this page under Windows is still controlled in php.ini, modify max_execution_time. If you use PDO to insert data into MYSQL. It takes about 140 seconds to insert 5,000 items, and about 260 seconds to insert 10,000 items.
The above is the content of the maximum execution time of the PHP page. The set_time_limit function does not work. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!
Related articles:
php set_time_limit() Set page execution time php set_time_limit(0) Function to set program execution time set_time_limit — Set the maximum script execution time