我有一个选择,并且限制在525的结果,否则将会卡住。
$query_other = "SELECT * FROM prod where active=1 and aprobat=1";
$other = mysql_query($query_other, $conn) or die(mysql_error());
while($row = mysql_fetch_assoc($other)){
$other_prod[]=$row;
}
在cpanel中,它显示超过525,当我在$ other上执行var_dump时,它的资源(525)类型(mysql结果)。如果它有帮助,它在Apache服务器上。
如果我把LIMIT 525工作并显示所有页面,否则只是空白页面。一段时间之后的任何事都行不通。
P.S:我知道mysql_已被弃用,我讨厌它,但在任务中是必需的,我对它没有任何权力。
答案 0 :(得分:0)
如果问题确实是内存,你可以用它动态增加它:
ini_set("memory_limit","512M"); //i.e. change the memory_limit to 512M, you should specify more than current limit.
答案 1 :(得分:0)
增加记忆力无济于事。这只是一个临时修复。此外,您需要考虑多个客户端同时执行相同的查询。系统如何跟上内存消耗。
但是对您需要撤回的fields有选择性。
<强>不强>:
SELECT *
<强>不要强>:
SELECT `field1`, `field2`, ...
这将减少内存消耗,让你处理事情。我想你不需要所有的行。而且您特别希望避免使用TEXT
/ BLOB
个,因为它们通常较大。只有在需要显示/使用它们时才选择它们。
您也可以使用:
LIMIT 0, 100
通过结果分页。可能会帮助你一点但我会选择正确的字段来永久修复它。
同时设置:
ini_set('display_errors', true);
error_reporting(-1);
看看PHP是否告诉你更多关于出了什么问题。