大きなファイルを読み取るための PHP 実装コード_PHP チュートリアル
PHP では、ファイルを読み取るときに最も速い方法は、file や file_get_contents などの関数を使用することで、数行の簡単なコードで必要な関数を美しく完成させることができます。ただし、操作するファイルが比較的大きなファイルの場合、これらの機能では不十分な場合があります。ここでは、大きなファイルを読み込むときによく使用される操作方法について説明します。
要件
約500万行を含む8億のログファイルがあります。phpを使用して最後の数行の内容を返します。
実装方法
1. ファイル関数を直接使用して操作します
注: ファイル関数はすべての内容を一度にメモリに読み取るため、PHP は一部の不適切に作成されたプログラムがメモリを過剰に消費することを防ぎます。システム メモリが不足し、サーバーがクラッシュするため、デフォルトでは最大メモリ使用量が 16M に制限されます。これは、php.ini のmemory_limit = 16M によって設定されます。この値が -1 に設定されている場合、メモリ使用量は制限されません。
以下は、このファイルの最後の行を抽出するために file を使用するコードです。
コード全体の実行には 116.9613 (秒)かかります。
$readData = fread($fp, $seekSize); ;
if (substr_count($readData, "n") >= $num + 1) {
preg_match("!(.*?n){".($num)."}$!", $readData , $match);
$data = $match[0];
}
}
echo $data;
F5 を押すと、このような大きなファイルをメモリに直接読み取ると、重大な結果が生じることがわかります。そのため、memory_limit をあまり高く調整することはできません。それ以外の場合、唯一の選択肢は、コンピューターをリセットすることです
2. Linux tail コマンドを直接呼び出して、最後の数行を表示します
Linux コマンドラインでは、tail -n を直接使用できます。 10 access.log を使用すると、ログ ファイルの最後の数行を簡単に表示できます。PHP を直接使用して tail コマンドを呼び出し、次のように PHP コードを実行できます。
コード全体の実行には 0.0034 (秒) かかります。コード
コードは次のとおりです:
file = 'access.log'; $file =escapeshellarg($file) // コマンドラインパラメータを安全にエスケープします
$line = `tail -n 1 $file` ;
echo $line;
コード全体の実行には 0.0095 (s) かかります
コードをコピーします
コードは次のとおりです:
function tail($fp,$n,$base=5) {
assert($n>0);
$pos = $n+1;
while(count($lines)fseek($fp) ,-$pos,SEEK_END );
} catch (例外 $e){ fseek(0);
$pos *= $base; $lines,fgets($ fp));
}
}
ファイルの末尾から読み取るには fseek を使用しますが、今回は少しずつ読み取るのではなく、データを 1 つずつ読み取るたびに、読み取りデータを読み取ります。は buf. に配置され、改行文字の数 (n) を使用して、最後の $num 行のデータが読み込まれたかどうかを判断します。
実装コードは次のとおりです
コード全体の実行には 0.0009(s) かかります。
コードをコピーします
コードは次のとおりです:
$fp = fopen($file, "r");
$pos = -2; ;
$data = "";
while ($line > 0) {
fseek($fp, $pos, SEEK_END); );
$pos --;
$t = " ";
$line --;
fclose ($fp);
方法 3
コード全体の実行には 0.0003(s) かかります
ini_set('memory_limit','-1');
$file = 'アクセス.ログ ';
$data = ファイル($file);
$line = $data[count($data)-1];

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています
