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 相关文章推荐
第十四节 命名空间 [14]
Oct 09 PHP
mysql 中InnoDB和MyISAM的区别分析小结
Apr 15 PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
Jul 01 PHP
PHP SESSION的增加、删除、修改、查看操作
Mar 20 PHP
php中动态变量用法实例
Jun 10 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
Apr 20 PHP
php利用imagemagick实现复古老照片效果实例
Feb 16 PHP
PHP编程计算日期间隔天数的方法
Apr 26 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
Oct 17 PHP
php+mysql开发中的经验与常识小结
Mar 25 PHP
php和vue配合使用技巧和方法
May 09 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
Nov 24 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
新安装的MySQL数据库需要注意的安全知识
2008/07/30 PHP
PHP 强制下载文件代码
2010/10/24 PHP
php中文验证码实现示例分享
2014/01/12 PHP
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
php上传文件问题汇总
2015/01/30 PHP
php使用for语句输出三角形的方法
2015/06/09 PHP
php创建图像具体步骤
2017/03/13 PHP
php实现微信模板消息推送
2018/03/30 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
JavaScript监测ActiveX控件是否已经安装过的代码
2008/09/02 Javascript
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
2015/03/11 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
2015/08/12 Javascript
浅谈JS原型对象和原型链
2016/03/02 Javascript
学习使用bootstrap基本控件(table、form、button)
2016/04/12 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
2016/05/24 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
JS判断是否手机或pad访问实现方法
2016/12/09 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
如何能分清npm cnpm npx nvm
2019/01/17 Javascript
关于AngularJS中几种Providers的区别总结
2020/05/17 Javascript
vue 导出文件,携带请求头token操作
2020/09/10 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
python实现apahce网站日志分析示例
2014/04/02 Python
Python实现的简单hangman游戏实例
2015/06/28 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
Python global全局变量函数详解
2018/09/18 Python
简单的Python调度器Schedule详解
2019/08/30 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
python with语句的原理与用法详解
2020/03/30 Python
毕业生就业自荐书
2013/12/15 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书