目次
PHP で大きなファイルを読み取るさまざまな方法の紹介
ホームページ バックエンド開発 PHPチュートリアル PHP で大きなファイルを読み取るさまざまな方法の紹介、_PHP チュートリアル

PHP で大きなファイルを読み取るさまざまな方法の紹介、_PHP チュートリアル

Jul 12, 2016 am 08:55 AM
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 コマンドを呼び出すことができます。

実行 PHP コードは次のとおりです。 リーリー

コード全体の実行には 0.0034 (s) かかります

3. PHP の fseek を直接使用してファイル操作を実行します
この方法は最も一般的な方法であり、ファイルの内容をすべて読み取る必要はなく、ポインターを介して直接操作するため、効率が非常に優れています。 fseek を使用してファイルを操作する場合、さまざまな方法があり、効率が若干異なる場合があります。一般的に使用される方法は次の 2 つです。

方法1

まず fseek を通じてファイルの最後の EOF を見つけ、次に最後の行の開始位置を見つけ、この行のデータを取得し、次に次の行の開始位置を見つけ、次にこの行の位置を取得する、というようになります。 $num が見つかるまで OK です。
実装コードは以下の通りです
リーリー

コード全体の実行には 0.0095 (s) かかります

方法 2

引き続き fseek を使用してファイルの末尾から読み取りますが、今回は少しずつ読み取るのではなく、データを部分的に読み取るたびに、読み取ったデータを buf に配置して渡します。改行文字 (\n) の数は、データの最後の $num 行が読み取られたかどうかを判断するために使用されます。
実装コードは以下の通りです
リーリー

コード全体の実行には 0.0009 秒かかります。

方法 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がファイルの内容をファイルに読み込む方法配列

http://www.bkjia.com/PHPjc/1117025.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/1117025.html技術記事 PHP で大きなファイルを読み取るさまざまな方法の紹介。大きなファイルを読み取るのはいつも悩みの種です。PHP を使用して直接小さなファイルを読み取ることはできますが、大きなファイルの場合は...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

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

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

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

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

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

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

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

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles