Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
发布:smiling 来源: PHP粉丝网 添加日期:2021-04-24 16:27:00 浏览: 评论:0
这篇文章主要介绍了Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)错误的解决方法,需要的朋友可以参考下
今天要用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");
- }//www.phpfensi.com
- echo "将所有发送失败的邮箱地址写入".$name."<br />";
- fclose($mailurl);
- }
- getmail(".","mail.txt");
- ?>
Tags: Fatal error: Allowed memory
相关文章
- ·Fatal error: Call to undefined function curl_init(2013-11-28)
- ·Fatal error: Cannot redeclare 常见问题(2013-11-29)
- ·php中Fatal error: Class ZipArchive not found的解决办法(2013-12-02)
- ·php错误Fatal error: Out of memory (allocated 262144)(2013-12-04)
- ·Fatal error: Out of memory (allocated 786432)提示解决办法(2013-12-04)
- ·Fatal error: Maximum execution time of 30 错误(2013-12-04)
- ·Fatal Error: Allowed memory size of 123456789 bytes exhausted(2013-12-04)
- ·PHP 报错 Fatal error: Class 'COM' not found in(2013-12-05)
- ·PHP Fatal error: Cannot use object of type stdClass as array in错误(2014-09-20)
- ·php程序执行超时解决办法(Fatal error: Maximum execution time of 30)(2014-09-21)
- ·php提示Fatal error: Call to undefined function imagecreate()(2014-09-21)
- ·Fatal error: Allowed memory size of 134217728 bytes exhauste(2014-09-21)
- ·php Fatal error: Call to undefined function imagecreatefromjpeg()(2015-04-04)
- ·php Fatal error: Call to undefined function mb_convert_encoding()(2015-04-04)
- ·php提示Fatal error: Call to undefined function openssl_x509_parse()(2015-04-04)
- ·php使用ZipArchive提示Fatal error: Class ZipArchive not found in(2015-04-09)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)