如何解决
最近在开发一个
错误信息显示允许的最大内存已经耗尽。遇到这样的错误起初让我很诧异,但转眼一想,也不奇怪,因为我正在开发的这个程序是要用一个foreach
循环语句在一个有4万条记录的表里全表搜索具有特定特征的数据,也就是说,一次要把4万条数据取出,然后逐条检查每天数据。可想而知,4万条数据全部加载到内存中,内存不爆才怪。
毕竟编程这么多年,我隐约记得
这个问题在
相对的,另外一种
很显然,缓冲查询模式适用于小数据量查询,而非缓冲查询适应于大数据量查询。
对于
非缓冲查询方法一: mysqli
- $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
- $uresult = $mysqli->query("SELECT Name FROM City", MYSQLI_USE_RESULT);
- if ($uresult) {
- while ($row = $uresult->fetch_assoc()) {
- echo $row['Name'] .
- }
- }
- $uresult->close();
- ?>
登录后复制
非缓冲查询方法二: pdo_mysql
- $pdo = new PDO("mysql:host=localhost;dbname=world", 'my_user', 'my_pass');
- $pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
- $uresult = $pdo->query("SELECT Name FROM City");
- if ($uresult) {
- while ($row = $uresult->fetch(PDO::FETCH_ASSOC)) {
- echo $row['Name'] .
- }
- }
- ?>
登录后复制
非缓冲查询方法三: mysql
- $conn = mysql_connect("localhost", "my_user", "my_pass");
- $db = mysql_select_db("world");
- $uresult = mysql_unbuffered_query("SELECT Name FROM City");
- if ($uresult) {
- while ($row = mysql_fetch_assoc($uresult)) {
- echo $row['Name'] .
- }
- }
- ?>
登录后复制
http://www.bkjia.com/www.bkjia.comtruehttp://www.bkjia.com/TechArticle如何解决