Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)


Posted in PHP onNovember 08, 2014

今天要用php代码来处理一个580M的日志文件,总共有219万多行记录,因为是.log的文件,在windows下面很难将文件按照条数来分割,于是在linux下用split -l 10000 filename 前缀名 将整个文件按10000行一个分割成了200多个小文件,之后用php来循环处理这200多个文件,可是执行到后来就出现了题目上面的错误:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)

去百度了一下,原来是php.ini中的内存分配的问题,默认php代码能够申请到的最大内存字节数就是134217728 bytes,如果代码执行的时候再需要更多的内存,就会报错了,于是就将php.ini文件中的配置改了一下:

memory_limit = 128M;//将128M改成了256M

但是之后一想,一个php脚本一次请求的内存空间就要超过128M,那不管你以后将memory_limit设置成多大,以后肯定有出问题的时候。

究其原因,是我在在编码时,仅仅对变量赋值,却从来没有 unset ($var) 过。导致了内存占用越来越多,所以以后一个变量不再使用之后,一定要记得unset掉它。

下面附上我今天处理这个日志文件的代码:

<?php

set_time_limit(1800) ;

/**

 * 获取日志中发送失败的邮箱地址

 * @param $directory log日志的目录

 * @param $name    失败邮箱保存的文件名

 */

function getmail($directory,$name){

//遍历目录下的.log文件

    $files=scandir("$directory");

    foreach($files as $v){

        if(preg_match_all("|mail\.log\D+|",$v,$log)){

            $logs[]=$log[0][0];

        }

    }

//将所有.log文件中发送失败邮箱提取出来    

    foreach($logs as $v){

        $row=file("$v");

        echo "读取".$v."文件<br />";

        foreach($row as $key => $value)

        {

            if(eregi("host name lookup failure|Connection timed out with|Connection refused by|cannot find your reverse hostname", $value)){

                if(preg_match("|\w+([-+.]\w+)*@\w+([-.]\w+)*.\w+([-.]\w+)*|", $row[$key],$matches)){

                    $mail[] = trim($matches[0]);

                    echo "获取发送失败的邮箱地址".$matches[0]."<br />";

                }else{

                    echo "无法获取日志中发送失败的邮箱,请检查";

                }

            }

        }

        unset($row);

    }

//将提取出来的发送失败邮箱写入到mail.txt文件中    

    $mailurl=fopen("$name","a");

    foreach($mail as $line)

    {

        fwrite($mailurl,$line."\r\n");

    }

    echo "将所有发送失败的邮箱地址写入".$name."<br />";

    fclose($mailurl);

}
getmail(".","mail.txt");

?>
PHP 相关文章推荐
PHP4实际应用经验篇(8)
Oct 09 PHP
PHP正确配置mysql(apache环境)
Aug 28 PHP
linux系统上支持php的 iconv()函数的方法
Oct 01 PHP
PHP 循环删除无限分类子节点的实现代码
Jun 21 PHP
PHP获取文件夹内文件数的方法
Mar 12 PHP
PHP模拟QQ登录的方法
Jul 29 PHP
thinkphp如何获取客户端IP
Nov 03 PHP
yii去掉必填项中星号的方法
Dec 28 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
Jan 09 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
微信小程序发送订阅消息的方法(php 为例)
Oct 30 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
PHP中使用循环实现的金字塔图形
Nov 08 #PHP
php调用新浪短链接API的方法
Nov 08 #PHP
php禁止浏览器使用缓存页面的方法
Nov 07 #PHP
php实现把url转换迅雷thunder资源下载地址的方法
Nov 07 #PHP
php采用file_get_contents代替使用curl实例
Nov 07 #PHP
php采用curl模仿登录人人网发布动态的方法
Nov 07 #PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
Nov 07 #PHP
You might like
一个基于phpQuery的php通用采集类分享
2014/04/09 PHP
php通过session防url攻击方法
2014/12/10 PHP
php在apache环境下实现gzip配置方法
2015/04/02 PHP
PHP完全二叉树定义与实现方法示例
2017/10/09 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
2018/11/22 PHP
原来Jquery.load的方法可以一直load下去
2011/03/28 Javascript
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
javascript获取当前鼠标坐标的方法
2015/01/10 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
js如何编写简单的ajax方法库
2017/08/02 Javascript
jQuery条件分页 代替离线查询(附代码)
2017/08/17 jQuery
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
2018/12/25 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
2020/02/12 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
2017/01/28 Python
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
5分钟 Pipenv 上手指南
2018/12/20 Python
对Python3 goto 语句的使用方法详解
2019/02/16 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
python之array赋值技巧分享
2019/11/28 Python
python中_del_还原数据的方法
2020/12/09 Python
Joie官方网上商店:购买服装和女装配饰
2018/06/05 全球购物
土地转让协议书
2014/04/15 职场文书
总经理任命书范本
2014/06/05 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
新闻发布会活动策划方案
2014/09/15 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
2015年财务经理工作总结
2015/05/13 职场文书
帝企鹅日记观后感
2015/06/10 职场文书
经销商会议开幕词
2016/03/04 职场文书
导游词之山西-五老峰
2019/10/07 职场文书