我在PHP中有一个奇怪的内存问题。我认为有些东西只允许一个数组最大为0.25M。看来脚本在崩溃之前只使用了大约6M。
这是xdebug的输出:
这是它正在调用的功能。 sql查询的结果是大约800行文本。
public function getOptions(){
$sql = "select Opt,
Code,
Description
from PCAOptions";
$result = sqlsrv_query($this->conn,$sql);
$arrayResult = array();
echo ini_get('memory_limit'); //this confirms that my memory limit is high enough
while($orderObject = sqlsrv_fetch_object($result,'PCA_Option')){
array_push($arrayResult, $orderObject);
}
return $arrayResult;
}
答案 0 :(得分:1)
所以,我不知道这是如何或为什么有效,但我通过从.htaccess文件中注释掉这两行来解决问题:
# php_value memory_limit 1024M
# php_value max_execution_time 18000
我这样做是因为我注意到phpinfo()在“master”和“local”两列中为这些设置返回了不同的值。
我的php.ini有memory_limit = 512M和max_execution_time = 3000,而我的.htacces文件有上述值。我以为.htaccess会覆盖php.ini中的任何内容,但我猜它引起了冲突。这可能是php中的一个可能的错误吗?
答案 1 :(得分:0)
一些PHP发行版,安全包和Web主机采取了许多步骤来阻止用户通过ini_set
在运行时提高PHP实际内存限制。最有可能的候选者是suhosin安全包。
这个年龄较大的Stack Overflow question还有许多其他建议。
答案 2 :(得分:-2)
使用'big'脚本时,我知道这将绕过我的服务器PHP内存限制, 我总是在脚本的开头设置这个变量。一直工作。
ini_set("memory_limit","32M"); //Script should use up to 32MB of memory