我有一个从数据库加载数据的 php 脚本。我从中加载数据的表是 50mb 大,当前的 php 内存设置允许 128mb - 我仍然收到错误消息
Allowed memory size of 134217728 bytes exhausted (tried to allocate 6 bytes)
一些研究使我改变了 php.ini 中的以下内容:
memory_limit = 128M
我将其更改为-1,根据文档将其设置为无限。无济于事。
不仅没有意义,即使查询返回了所有 50mb,它也不应该抱怨,因为限制设置为 128mb - 奇怪的是,我运行的查询甚至不需要太多内存:当我回显它并运行时它直接在数据库中,它只返回三行。查询如下所示:
SELECT * FROM table WHERE foreign_id=1
有谁知道如何解决这个问题?我想将内存限制设置为无限。
编辑 1
首先 - 我从终端而不是浏览器运行脚本是否重要?
其次,这里是php代码:
//Connect to database
$user="root";
$databasePassword="password";
$host="127.0.0.1";
$database="primarydata";
$identifier=mysql_connect($host,$user,$databasePassword,true);
$db1=mysql_select_db($database);
//Select * from first table
$query="SELECT id,name,city,country FROM table1 WHERE id>=1 ORDER BY id ASC";
$result=mysql_query($query);
$datas=array();
while($row=mysql_fetch_object($result)) $datas[]=(object) $row;
//Loop through artists
for($i=0;$i<sizeof($datas);$i++){
for($j=$i+1;$j<sizeof($datas);$j++){
//This is where the problem occurs
$query="SELECT * FROM table2 WHERE data_id=".$datas[$i]->id;
}
}
第三,我必须使用“--enable-memory-limit'”吗?