PHP_PHPチュートリアルで大容量ファイルの読み込み方法を詳しく解説
この記事では、PHP で大容量ファイルを読み込む実装方法について詳しく説明します。詳しく知りたい学生は参考にしてください。
要件は次のとおりです: 約 500 万行の約 1G のログ ファイルがあり、php を使用して最後の数行の内容を返します。
実装方法:
1. ファイル関数を直接使用して操作します
注: ファイル関数はすべてのコンテンツを一度にメモリに読み取るため、PHP は、一部の不適切に作成されたプログラムがメモリを過剰に占有し、システムに障害が発生することを防ぎます。メモリが不足するとサーバーがクラッシュするため、デフォルトでは最大メモリ使用量が 16M に制限されます。この値が -1 に設定されている場合、メモリ使用量は制限されません。
以下は、file を使用してこのファイルの最後の行を抽出するコードです。
コード全体の実行には 116.9613 (s) かかります。
コードは次のとおりです | コードをコピーします |
ini_set('memory_limit', '-1'); $file = 'access.log'; $data = file($file); $line = $data[count($data)-1]; echo $line; |
私のマシンには 2G のメモリがあり、F5 キーを押して実行すると、システムが直接グレーになり、約 20 分後に回復します。メモリの問題は深刻なので、ここでは説明しません。最後の手段として、memory_limit を高く設定しすぎると、コンピューター室に電話してマシンをリセットする必要があります。
2. 表示するには、linux tail コマンドを直接呼び出します。最後の数行
Linux コマンド ラインでは、tail -n 10 access.log を使用して、ログ ファイルの最後の数行を簡単に表示できます。php を直接使用して、tail コマンドを呼び出し、php コードを実行できます。
コード全体の実行には 0.0034 (s) かかります
コードは次のとおりです | コードをコピーします |
file = 'access.log'; $file =scapeshellarg($file); //コマンドライン引数を安全にエスケープします $line = `tail -n 1 $file`; echo $line; |
3. php の fseek を直接使用してファイル操作を実行します
この方法は最も一般的な方法です。ファイルの内容をすべてメモリに読み込む必要はありませんが、ポインタを介して直接操作します。そのため、fseek を使用してファイルを操作する場合は、さまざまな方法があり、その効率は若干異なる場合があります。よく使用される 2 つの方法
方法 1:
最初に fseek でファイルを検索し、最後の行の最後の EOF を見つけ、次に最後の行の開始位置を見つけ、この行のデータを取得し、次に次の行の開始位置を見つけます。 、次にこの行の位置を取得し、$num 行が見つかるまでこれを繰り返します。
実装コードは以下の通りです
コード全体の実行には0.0095(s)かかります
コードは以下の通りです | コードをコピーします | ||||||||
function tail($fp,$n,$base=5 ) 方法 2: ファイルの末尾から読み取るには fseek を使用しますが、今回は 1 つずつではなく、データが読み取られるたびに 1 つずつ読み込まれます。 buf を取得し、改行文字の数 (n) を使用して、最後の $num 行のデータが読み込まれたかどうかを判断します。
方法 3 : コード全体の実行が完了しました 0.0003(s)かかります
|
www.bkjia.com
true

ホット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()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
