Php 允许的内存大小

Php 允许的内存大小,php,.htaccess,mysqli,memory-limit,php-mysqlidb,Php,.htaccess,Mysqli,Memory Limit,Php Mysqlidb,我正在使用和在我的本地计算机上,一切工作都没有任何问题。但是,当我将项目上载到主机时,出现以下错误: 致命错误:第678行/usr/home/data/site/public_html/classes/MysqliDb.php中允许的内存大小为52428800字节(尝试分配50331646字节) MysqliDB.php中的第678行包含以下命令: call_user_func_array(array($stmt, 'bind_result')`, $parameters); 当我在.htac

我正在使用和在我的本地计算机上,一切工作都没有任何问题。但是,当我将项目上载到主机时,出现以下错误:

致命错误:第678行/usr/home/data/site/public_html/classes/MysqliDb.php中允许的内存大小为52428800字节(尝试分配50331646字节)

MysqliDB.php
中的第678行包含以下命令:

call_user_func_array(array($stmt, 'bind_result')`, $parameters);
当我在
.htaccess
文件中键入
php\u value memory\u limit 64M
时,我得到以下错误:

[Fri May 30 11:03:18 2014][alert][client 37.98.159.18]/usr/home/data/site/public_html/.htaccess:无效命令“php_value”,可能拼写错误或由服务器配置中未包含的模块定义,请参考:

  • 查看PHP版本,特别是主机上的mysqli是否基于mysqlnd。您可以为此使用phpinfo()。如果不是,请更换主机
  • 不要贪心于数据库表定义。如果只需要存储一页文本,请不要将列定义为长blob,将其设置为适度文本-早期版本的mysqli尝试根据行定义而不是实际数据大小为最大可能大小分配内存
  • 如果查询返回的行太多,并且您需要所有行,那么取消缓冲查询将解决问题
    原因是PHP耗尽了配置值memory\u limit设置的最大内存限制

    通常,此PHP配置值的默认值非常低,为8MB或16MB

    因此,增加servers php.ini配置文件中的内存限制。您只需根据需要将该值从64MB更改为256M或512MB(大小越小越好)

    php.ini文件中的配置

    memory_limit = 128M
    max_execution_time = 19000
    
    另一个选项是通过
    .htaccess file
    增加此值以解决此问题。 所以应该是这样的:

    php_value memory_limit 128M 
    php_value max_execution_time 19000
    

    这可能会对您有所帮助-您似乎试图一次获取所有内容,这很容易淹没内存,只需获取每一行并处理而不是PHP 5.2.17版。我没有在phpinfo()表列上找到mysqlnd。列为mediumtext5.2已经非常过时。谢谢。我将我的列类型改为“TEXT”,并修复了错误。增加内存限制就像用汽油灭火一样。你需要让你的PHP消耗更少的内存,就像OP一样。那么对于这个问题有什么更好的解决方案呢?我也面临同样的问题,最终发现这个简单的解决方案对我有效。优化内存消耗。选择所需的唯一数据,通过小裂缝读取信息等。