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 相关文章推荐
phpmyadmin的#1251问题
Nov 25 PHP
PHP如何得到当前页和上一页的地址?
Nov 27 PHP
php从右向左/从左向右截取字符串的实现方法
Nov 28 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
Jun 28 PHP
本地机apache配置基于域名的虚拟主机详解
Aug 10 PHP
php ajax实现文件上传进度条
Mar 29 PHP
PHP数据的提交与过滤基本操作实例详解
Nov 11 PHP
PHP运用foreach神奇的转换数组(实例讲解)
Feb 01 PHP
php面向对象重点知识分享
Sep 27 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
Oct 18 PHP
php实现根据身份证获取精准年龄
Feb 26 PHP
Yii框架应用组件用法实例分析
May 15 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 小乘法表实现代码
2009/07/16 PHP
php 多文件上传的实现实例
2016/10/23 PHP
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
2009/11/28 Javascript
深入分析原生JavaScript事件
2014/12/29 Javascript
jquery实现的V字形显示效果代码
2015/10/27 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
Javascript技术栈中的四种依赖注入详解
2016/02/23 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
2017/07/23 Javascript
JavaScript事件委托原理与用法实例分析
2018/06/07 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
2018/08/19 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
2018/08/30 Javascript
对angular4子路由&amp;辅助路由详解
2018/10/09 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
详解Vue前端对axios的封装和使用
2019/04/01 Javascript
Javascript异步执行不按顺序解决方案
2020/04/30 Javascript
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python基础学习之常见的内建函数整理
2017/09/06 Python
详解python的ORM中Pony用法
2018/02/09 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
2020/02/26 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
HTML5中的postMessage API基本使用教程
2016/05/20 HTML / CSS
求职简历的自我评价怎样写好
2013/10/07 职场文书
大学军训感言
2014/01/10 职场文书
交通事故和解协议书
2015/01/27 职场文书
结婚老公保证书
2015/02/26 职场文书
歼十出击观后感
2015/06/11 职场文书
数学复习课教学反思
2016/02/18 职场文书
文书工作总结(范文)
2019/07/11 职场文书
Node.js实现爬取网站图片的示例代码
2022/04/04 NodeJs
CSS控制继承中的height能变为可继承吗
2022/06/10 HTML / CSS