允许的内存大小*个字节已用尽,以php为单位
作者:互联网
我在php中收到“内存不足”错误.我知道可以用ini_set(“ memory_limit”,“ 64M”)之类的东西来解决,但我不想这么做,因为脚本的大量内存是异常的.我有一些报告非常庞大,以至于我几乎需要该内存,但通常不需要.
问题是:我什至不知道哪个脚本正在消耗那么多的内存,而且还没有用户报告错误.我知道这仅是由于log_errors(设置为true)和error_log(设置为我的桌面上非常可见的文件)而发生的,但是它没有报告哪个脚本是罪魁祸首.
关于如何知道的任何想法吗?
解决方法:
您可能会遇到一些基本的算法错误,创建大型数据结构,与其他结构一样重建数据,过多的字符串操作,将整个文件加载到内存中,从存储中重新获取数据,而不是重新使用上次检索到的数据,之类的东西.许多本地数据库处理程序会为您提供查询返回的整个数据集,而不是为您提供数据集资源.这对于查询可能返回比原始设想更多的数据的查询尤其有害.
分析代码后,就可以开始寻找内存浪费.为了处理大型日志记录数据集,将代码结构化为一次只能处理一行,因此它可以(例如)while($data = mysql_fetch_assoc())而不是foreach($data_rows as $data).这也使您可以使用无缓冲查询,这也将减少内存消耗.
错误日志应该告诉您已死的脚本.也许Apache错误日志可以提供帮助.
标签:memory-management,php 来源: https://codeday.me/bug/20191210/2103136.html