Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
允许的内存大小为*字节(以php为单位)_Php_Memory Management - Fatal编程技术网

允许的内存大小为*字节(以php为单位)

允许的内存大小为*字节(以php为单位),php,memory-management,Php,Memory Management,我在php中遇到“内存不足”错误。我知道它可以用ini_集合(“内存限制”,“64M”)之类的工具来修复,但我不想这样做,因为脚本的内存太多是不正常的。我有一些非常大的报告,我非常需要这些记忆,但通常不需要 问题是:我甚至不知道哪个脚本消耗了那么多内存,而且还没有用户报告过错误。我知道这是由于log_errors(设置为true)和error_log(设置为桌面上一个非常可见的文件)才发生的,但它没有报告哪个脚本是罪魁祸首 你知道怎么知道吗?一个脚本占用超过32M的内存是很正常的,我最近在使用G

我在php中遇到“内存不足”错误。我知道它可以用ini_集合(“内存限制”,“64M”)之类的工具来修复,但我不想这样做,因为脚本的内存太多是不正常的。我有一些非常大的报告,我非常需要这些记忆,但通常不需要

问题是:我甚至不知道哪个脚本消耗了那么多内存,而且还没有用户报告过错误。我知道这是由于log_errors(设置为true)和error_log(设置为桌面上一个非常可见的文件)才发生的,但它没有报告哪个脚本是罪魁祸首


你知道怎么知道吗?

一个脚本占用超过32M的内存是很正常的,我最近在使用GD库时遇到了这个问题,在重新缩放某些图像类型时需要消耗更多的内存,并且抛出了同样的错误。在您的情况下,我会将内存加倍,并将执行时间限制在安全的范围内(如果还没有)。我通过.htaccess执行此操作,使用以下行:

php_value memory_limit 64M
php_value max_execution_time 30

你需要一个剖析器。我更喜欢。解释如何获取PHP脚本的内存使用信息

您可能有一些基本的算法错误,创建大型数据结构,将数据重建为其他结构,过多的大型字符串操作,将整个文件加载到内存中,从存储器中重新提取数据,而不是重新使用上次检索到的数据,诸如此类的事情。而且,许多自行开发的数据库处理程序为您提供查询返回的整个数据集,而不是提供数据集资源。这对于返回的数据比最初设想的要多得多的查询尤其有害

一旦你分析了你的代码,你就可以开始寻找内存浪费了。要处理大型日志数据集,请将代码构造为一次处理一行,例如,
while($data=mysql\u fetch\u assoc())
而不是
foreach($data\u rows as$data)
。这还允许您使用无缓冲查询,这也将减少内存消耗


错误日志应该告诉您已终止的脚本。Apache错误日志可能会有所帮助。

将错误时间与web服务器传入的请求进行比较?这假设您每分钟只有几个请求或更少。这就是问题所在:Apache错误日志没有显示任何内容,PHP只会在没有脚本名称的情况下发出“内存不足”错误。我已经将php设置为报告通知以及脚本名称,但无法处理此特定错误(当然,它内存不足,无法执行其他任何操作)