国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)

2024-05-04 23:27:03
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了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");
    }
    echo "將所有發送失敗的郵箱地址寫入".$name."<br />";
    fclose($mailurl);
}

 

getmail(".","mail.txt");
?>

 

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿城市| 滨州市| 闽侯县| 凌云县| 博罗县| 青海省| 师宗县| 岳阳市| 延寿县| 新干县| 兴安盟| 通海县| 乌兰浩特市| 江门市| 青浦区| 宁河县| 曲靖市| 沙湾县| 临朐县| 道真| 达拉特旗| 泊头市| 巴彦县| 金坛市| 广灵县| 黑河市| 武宣县| 邹平县| 剑阁县| 介休市| 北川| 常德市| 山东省| 思南县| 洛隆县| 鸡西市| 利津县| 石渠县| 苍南县| 九龙城区| 金川县|