14

我在 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;
}
4

3 回答 3

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中的一个可能的错误吗?

于 2013-01-18T21:36:26.647 回答
0

一些 PHP 发行版、安全包和 Web 主机采取了许多步骤来防止用户在运行时通过ini_set. 最有可能的候选者是suhosin安全包。

这个较旧的Stack Overflow 问题还有许多其他建议。

于 2013-01-18T18:41:56.157 回答
-2

当使用我知道会绕过我的服务器 PHP 内存限制的“大”脚本时,我总是在脚本的开头设置这个变量。一直在工作。

ini_set("memory_limit","32M"); //Script should use up to 32MB of memory
于 2013-01-20T09:33:14.720 回答