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 相关文章推荐
PHP分页显示制作详细讲解
Nov 19 PHP
php Try Catch异常测试
Mar 01 PHP
PHP页面中文乱码分析
Oct 29 PHP
PHP实现的下载远程图片自定义函数分享
Jan 28 PHP
php实现将字符串按照指定距离进行分割的方法
Mar 14 PHP
php自动识别文字编码并转换为目标编码的方法
Aug 08 PHP
详解Laravel视图间共享数据与视图Composer
Aug 04 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
Nov 16 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
Aug 07 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
Oct 16 PHP
laravel 框架结合关联查询 when()用法分析
Nov 22 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
Feb 26 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
php 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
Javascript和Ajax中文乱码吐血版解决方案
2009/12/21 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
2013/06/29 Javascript
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
2016/06/23 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
JavaScript实现窗口抖动效果
2016/10/19 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
详解vue中使用express+fetch获取本地json文件
2017/10/10 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
vue实现广告栏上下滚动效果
2020/11/26 Vue.js
[07:31]DOTA2卡尔工作室 英雄介绍主宰篇
2013/06/25 DOTA
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
pyv8学习python和javascript变量进行交互
2013/12/04 Python
python 网络爬虫初级实现代码
2016/02/27 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
2019/06/13 Python
python加载自定义词典实例
2019/12/06 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
Hunkemöller西班牙:欧洲最大的内衣连锁店
2018/08/15 全球购物
Kathmandu新西兰官网:新西兰户外运动品牌
2019/07/27 全球购物
电子信息毕业生自荐信
2013/11/16 职场文书
村官工作鉴定评语
2014/01/27 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
美容院管理规章制度
2015/08/05 职场文书
公司年会主持词范文!
2019/05/07 职场文书