PHP で大きなファイルを読み取るさまざまな方法の紹介、_PHP チュートリアル
PHP で大きなファイルを読み取るさまざまな方法の紹介
大きなファイルを読み取るのはいつも頭痛の種です。PHP を直接使用して小さなファイルを読み取ることもできますが、大きな記事になると次のことがわかります。一般的に使用されるメソッドが正常に使用できない、または時間がかかりすぎるため、PHP での大きなファイルの読み取りの問題の解決策を見てみましょう。この例がお役に立てば幸いです。
PHP では、ファイルを読み取るときに、file や file_get_contents などの関数を使用するのが最も速い方法で、数行の簡単なコードで必要な関数を美しく完成させることができます。ただし、操作するファイルが比較的大きなファイルの場合、これらの機能では不十分な場合があります。ここでは、大きなファイルを読み込むときによく使用される操作方法について説明します。
要件:
約 500 万行からなる 8 億のログ ファイルがあり、PHP を使用して最後の数行の内容を返します。
実装方法:
1. ファイル機能を直接使用して操作します
ファイル関数はすべてのコンテンツを一度にメモリに読み込みます。また、不適切に作成されたプログラムがメモリを大量に消費してシステム メモリが不足し、サーバーのメモリがクラッシュすることを防ぐために、PHP はデフォルトで最大使用量に制限されています。 16M。php.ini のmemory_limit = 16M で設定されます。この値が -1 に設定されている場合、メモリ使用量は制限されません。
以下は、 file を使用してこのファイルの最後の行を抽出するコードです:
リーリー コード全体の実行には 116.9613 (s) かかります。
私のマシンには 2G のメモリがあり、F5 キーを押して実行すると、システムがグレーになり、ほぼ 20 分後に回復します。このような大きなファイルをメモリに直接読み込むと、非常に深刻な結果が生じることがわかります。したがって、memory_limit をあまり高く調整することはできません。そうでない場合は、コンピューター室に電話してマシンをリセットするように依頼するしかありません。
2. Linux tail コマンドを直接呼び出して、最後の数行を表示します
Linux コマンドラインでは、tail -n 10 access.log を直接使用して、ログ ファイルの最後の数行を簡単に表示できます。PHP を直接使用して、tail コマンドを呼び出すことができます。
コード全体の実行には 0.0034 (s) かかります
3. PHP の fseek を直接使用してファイル操作を実行します
この方法は最も一般的な方法であり、ファイルの内容をすべて読み取る必要はなく、ポインターを介して直接操作するため、効率が非常に優れています。 fseek を使用してファイルを操作する場合、さまざまな方法があり、効率が若干異なる場合があります。一般的に使用される方法は次の 2 つです。
まず fseek を通じてファイルの最後の EOF を見つけ、次に最後の行の開始位置を見つけ、この行のデータを取得し、次に次の行の開始位置を見つけ、次にこの行の位置を取得する、というようになります。 $num が見つかるまで OK です。
実装コードは以下の通りです
リーリー
方法 2
引き続き fseek を使用してファイルの末尾から読み取りますが、今回は少しずつ読み取るのではなく、データを部分的に読み取るたびに、読み取ったデータを buf に配置して渡します。改行文字 (\n) の数は、データの最後の $num 行が読み取られたかどうかを判断するために使用されます。
実装コードは以下の通りです
リーリー
方法 3
リーリー
コード全体の実行には 0.0003(秒)かかります方法 4、PHP の stream_get_line 関数は、500,000 項目を含む大きなデータ ファイルを読み取るのに約 20 秒かかります。サンプルコードは以下の通りです
リーリー
上記は PHP で大きなファイルを読み取る 4 つの方法です。皆さんの学習に役立つことを願っています。興味があるかもしれない記事:
- PHP ファイルを読み取る正しい方法
- PHP ファイルの内容コード (txt、js など) を読み取る
- php ファイルの読み取りが文字化けする問題
- php はファイルの内容を string に読み取りますが、改行、空白行、行頭と行末のスペースを削除します (Zjmainstay によるオリジナル)
- PHP はファイルを読み取り、リモート ファイルのコード共有をサポートできます
- PHP でファイルの内容を読み取るいくつかの方法の詳細な説明
- PHP のファイルの読み取りファイルタイプのヘッダ判定の実装コード
- PHPがファイルの内容を読み込んだ後にファイルをクリアするサンプルコード
- PHPがファイルを1行ずつ読み込むときに改行文字を削除する3つの方法
- PHPがファイルの内容をファイルに読み込む方法配列

ホット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 のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー
