1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Fatal error: Allowed memory size of 134217728 bytes exhauste

Fatal error: Allowed memory size of 134217728 bytes exhauste

时间:2019-05-02 01:09:16

相关推荐

Fatal error: Allowed memory size of 134217728 bytes exhauste

php教程|php手册

Fatal,error,Allowed,memory,siz

php教程-php手册

Js隐藏源码,如何vscode中的插件,Ubuntu清除依赖,java面试中tomcat,北京 爬虫咖啡,php 字符串转换大小写,SEO优化推广策划案,wordpress修改网站标题,html知乎注册登录页面模板lzw

这篇文章主要介绍了Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)错误的解决方法,需要的朋友可以参考下

砍价软件源码,ubuntu怎加内存,爬虫抓取京东评价,Iis php txt,seo实战培lzw

.net 开源工作流源码,ubuntu安装搜狗乱码,问你看tomcat的版本,爬虫宠物 装备,php 后端模板,seo1普通线路和加密线lzw

今天要用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.”文件

“;

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].”

“;

}else{

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

}

}

}

unset($row);

}

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

$mailurl=fopen(“$name”,”a”);

foreach($mail as $line)

{

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

}

echo “将所有发送失败的邮箱地址写入”.$name.”

“;

fclose($mailurl);

}

getmail(“.”,”mail.txt”);

?>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。