php - 在 php 中允许耗尽 * 字节的内存大小

标签 php memory-management

我在 php 中遇到“内存不足”错误。我知道可以用ini_set("memory_limit","64M")之类的来修复,但是我不想,因为一个脚本那么大的内存是不正常的。我有一些非常庞大的报告,我非常需要这些内存,但通常不需要。

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

知道如何知道吗?

最佳答案

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

分析代码后,您就可以开始查找内存浪费了。为了处理大型日志记录数据集,将代码结构化为一次处理一行,因此它(例如)while( $data = mysql_fetch_assoc() ) 而不是 foreach( $data_rows作为 $data )。这还允许您使用无缓冲查询,这也将减少内存消耗。

错误日志应该告诉您死掉的脚本。也许 Apache 错误日志可以提供帮助。

关于php - 在 php 中允许耗尽 * 字节的内存大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/827435/

相关文章:

php - 如何在 Laravel 5.7 中获取当前用户详细信息?

php - 在数据库更新之前检查客户端是否更改了 ID

javascript - Ajax请求文档准备好会导致jquery加载缓慢

c - 可变大小数组

java - 使用磁盘内存运行对内存要求较高的 Java 程序

objective-c - 从主线程访问 NSOperation 对象的安全方法?

php - 在 php : Response Too Late 中选择查询

php - Codeigniter 对选定记录进行分页

javascript - Javascript/Node.js 引擎如何将 JSON 存储在内存中?

C char 指针 strcpy 内存错误