目次
致命的エラー: 許可されたメモリ サイズ 134217728 バイトが使い果たされました (2611816 バイトを割り当てようとしました)、allocate2611816
ホームページ バックエンド開発 PHPチュートリアル 致命的エラー: 許容メモリ サイズ 134217728 バイトが使い果たされました (2611816 バイトを割り当てようとしました),allocate2611816_PHP 教程

致命的エラー: 許容メモリ サイズ 134217728 バイトが使い果たされました (2611816 バイトを割り当てようとしました),allocate2611816_PHP 教程

Jul 13, 2016 am 10:14 AM
error fatal memory size

致命的エラー: 許可されたメモリ サイズ 134217728 バイトが使い果たされました (2611816 バイトを割り当てようとしました)、allocate2611816

今日は、PHP コードを使用して、合計 219 万行を超えるレコードを持つ 5 億 8,000 万のログ ファイルを処理する必要があります。これは .log ファイルであるため、Windows ではエントリ数に応じてファイルを分割するのが困難です。 Linux では、split -l を使用します。ファイル名プレフィックス 10000 は、ファイル全体を 10000 行に基づいて 200 を超える小さなファイルに分割し、PHP を使用してこれらの 200 を超えるファイルをループで処理します。上記のエラーが表示されました:

コードをコピーします コードは次のとおりです:

致命的なエラー: 許容メモリ サイズ 134217728 バイトが使い果たされました (2611816 バイトを割り当てようとしました)

Baidu に行ったところ、php.ini のメモリ割り当ての問題であることがわかりました。コードの実行時にさらに多くのメモリが必要な場合、デフォルトでは、PHP コードが適用できる最大メモリ バイト数は 134217728 バイトです。 、エラーが報告されるため、php.ini ファイルの設定を変更しました。

コードをコピーします コードは次のとおりです:
Memory_limit = 128M //128M を 256M に変更します
;
しかし、よく考えてみると、PHP スクリプトが一度に要求するメモリ空間は 128M を超えるため、将来的にどれだけ大きくmemory_limitを設定したとしても、将来的には間違いなく問題が発生するでしょう。

その理由は、コーディング中に変数に値を代入するだけで、設定を解除($var)しなかったためです。これによりメモリ使用量がますます増加するため、変数が使用されなくなった後は、忘れずに設定を解除する必要があります。

今日このログファイルを処理するために使用したコードを以下に添付します:

コードをコピーします コードは次のとおりです:
set_time_limit(1800) ;
/**
* 送信に失敗したメールアドレスをログから取得します
* @param $directory ログディレクトリ
* @param $name 失敗したメールボックスに保存されたファイル名
​*/
関数 getmail($directory,$name){
// ディレクトリ内の .log ファイルを走査します
$files=scandir("$ディレクトリ");
foreach($files as $v){
If(preg_match_all("|mail.logD+|",$v,$log)){
$logs[]=$log[0][0];
}
}
//すべての .log ファイルから送信に失敗したメールを抽出します
foreach($logs as $v){
$row=file("$v");
Echo "read"を添えて。$ v。 "file< br />";
foreach($row as $key => $value)
{
If(eregi("ホスト名の検索に失敗しました|接続がタイムアウトしました|接続が拒否されました|逆ホスト名が見つかりません", $value)){
if(preg_match("|w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*|", $row[$key],$matches)) {
$mail[] = トリム($matches[0]);
echo "送信に失敗したメール アドレスを取得します".$matches[0]."
";
}その他{
echo "ログに送信に失敗したメールアドレスを取得できませんでした。確認してください";
}
}
}
unset($row);
}
// 抽出して送信に失敗したメールアドレスを mail.txt ファイルに書き込みます
$mailurl=fopen("$name","a");
foreach($mail as $line)
{
fwrite($mailurl,$line."rn");
}
echo "送信に失敗したすべてのメール アドレスを ".$name" に書き込みます。
";
fclose($mailurl);
}
getmail(".","mail.txt");

?>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/908177.html技術記事致命的なエラー: 許容メモリ サイズ 134217728 バイトが使い果たされました (2611816 バイトを割り当てようとしました)、割り当て 2611816 今日は、PHP コードを使用して、合計 580M のログ ファイルを処理する必要があります...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

win10でゲームを開くときに致命的なエラーが発生した場合はどうすればよいですか? win10でゲームを開くときに致命的なエラーが発生した場合はどうすればよいですか? Feb 09, 2024 pm 12:54 PM

win10でゲームを開くときに致命的なエラーが発生した場合はどうすればよいですか?ソフトウェアまたはゲームの実行中に致命的なエラー メッセージが表示された場合はどうすればよいですか?このサイトでは、Win10でゲームを開くときに致命的なエラーが発生した場合の対処方法をユーザーに丁寧に紹介します。 win10でゲームを開くときに致命的なエラーが発生した場合はどうすればよいですか?方法 1: ファイルの破損やクラック パッチの使用など、ゲーム クライアントに問題があり、致命的なエラーが発生する場合は、ゲームを再ダウンロードできます。方法 2: コンピューターのメモリが小さすぎると、致命的なエラーが発生する可能性があります。物理メモリが十分な場合は、システムの仮想メモリを設定してみてください。

PHP 致命的エラーの解決策: 未定義メソッド PDO::prepare() の呼び出し PHP 致命的エラーの解決策: 未定義メソッド PDO::prepare() の呼び出し Jun 22, 2023 pm 06:40 PM

PHP は、長い間使用されている人気のある Web 開発言語です。 PHP に統合された PDO (PHP Data Object) クラスは、Web アプリケーションの開発中にデータベースと対話する一般的な方法です。ただし、一部の PHP 開発者がよく遭遇する問題は、PDO クラスを使用してデータベースと対話するときに、次のようなエラーが表示されることです。

Vue アプリケーションで axios を使用しているときに「Uncaught (in Promise) Error: Request failed with status code 500」が発生した場合はどうすればよいですか? Vue アプリケーションで axios を使用しているときに「Uncaught (in Promise) Error: Request failed with status code 500」が発生した場合はどうすればよいですか? Jun 24, 2023 pm 05:33 PM

Vue アプリケーションで axios を使用するのは非常に一般的です。axios は、ブラウザーと Node.js で使用できる Promise ベースの HTTP クライアントです。開発プロセス中に、「Uncaught(inpromise)Error: Requestfailedwithstatuscode500」というエラー メッセージが表示されることがありますが、開発者にとって、このエラー メッセージは理解および解決が難しい場合があります。この記事ではこれについて説明します

JavaのFile.length()関数を使用してファイルのサイズを取得します。 JavaのFile.length()関数を使用してファイルのサイズを取得します。 Jul 24, 2023 am 08:36 AM

ファイルのサイズを取得するには、Java の File.length() 関数を使用します。ファイル操作を扱うとき、ファイル サイズは非常に一般的な要件です。Java では、ファイルのサイズを取得するための非常に便利な方法、つまり length( ) File クラスのメソッド。この記事では、このメソッドを使用してファイルのサイズを取得する方法と、対応するコード例を紹介します。まず、サイズを取得したいファイルを表す File オブジェクトを作成する必要があります。 File オブジェクトを作成する方法は次のとおりです: Filef

ファイナルファンタジー7の致命的なエラーを解決する方法 ファイナルファンタジー7の致命的なエラーを解決する方法 Mar 07, 2024 pm 04:40 PM

ファイナルファンタジー 7 をプレイしていると、多くのプレイヤーが致命的なエラーの問題に遭遇し、その解決方法がわかりません。通常、メモリが読み取れないという問題が発生します。この問題を解決するには、ゲームを再インストールすることをお勧めします。ファイナルファンタジー 7 の致命的エラーの解決方法 1. ゲームを再インストールします ファイルの破損、不完全さ、一部のクラック パッチの使用などのゲーム クライアントの問題は致命的なエラーにつながる可能性があるため、ゲームを再インストールすることをお勧めします。 2. すべてのファイルの読み取り専用プロパティを削除します。一部のファイル プロパティは読み取り専用であってはなりませんが、読み取り専用に設定されています。すべてのファイルの読み取り専用プロパティを削除するだけです。たとえば、ゲームがプレイできない場合は、ゲーム上で右クリックしてフォルダをインストールし、読み取り専用属性を解除してください。 3. 仮想メモリの設定は、メモリが少なすぎることが原因である可能性があります。物理メモリが十分な場合は、

C++ コードの「エラー: 'datatype' の前に初期化子が必要です」問題を解決する C++ コードの「エラー: 'datatype' の前に初期化子が必要です」問題を解決する Aug 25, 2023 pm 01:24 PM

C++ コードの「error:expectedinitializerbefore'datatype'」問題を解決します。C++ プログラミングでは、コードを作成するときにコンパイル エラーが発生することがあります。一般的なエラーの 1 つは、「error:expectedinitializerbefore'datatype'」です。このエラーは通常、変数宣言または関数定義で発生し、プログラムが正しくコンパイルされなかったり、

C++ コードの「エラー: 不完全な型は許可されません」の問題を解決する C++ コードの「エラー: 不完全な型は許可されません」の問題を解決する Aug 26, 2023 pm 08:54 PM

C++ コードの「error:incompletetypeisnotallowed」問題を解決します。C++ プログラミング プロセス中に、コンパイル エラーが発生することがあります。一般的なエラーの 1 つは、「error:incompletetypeisnotallowed」です。このエラーは通常、不完全な型を操作することによって発生します。この記事では、このエラーの原因を説明し、いくつかの解決策を提供します。まず、私は

0271: リアルタイムクロックエラーによりコンピュータの電源が入らない場合はどうすればよいですか? 0271: リアルタイムクロックエラーによりコンピュータの電源が入らない場合はどうすればよいですか? Mar 13, 2023 am 11:30 AM

起動できない「0271: リアルタイム クロック エラー」の解決策: 1. F1 キーを押し、表示されるインターフェイスでオプション バーを 3 番目の項目「日付/時刻」に移動します; 2. システム時刻を手動で現在の時刻に変更します。 1 回; 3. F10 キーを押し、ポップアップ ダイアログ ボックスで [はい] を選択します; 4. ノートブックを再度開いて、通常どおり起動します。

See all articles