検索
ホームページバックエンド開発PHPチュートリアルPHP が大きなファイルのプログラム コードを読み取る_PHP チュートリアル

PHP が大きなファイルのプログラム コードを読み取る_PHP チュートリアル

Jul 13, 2016 am 10:48 AM
php一般的にそしてコード大きい書類はいプログラム読む

PHP での大きなファイルの読み取りと通常のファイルの読み取りにはいくつかの違いがあります。ファイルが数百 MB または数百 GB の場合、通常の PHP 読み取りファイルは非常に遅くなるか、スタックする可能性があります。大きなファイルの読み取りに関するヒントを紹介します。

通常、ファイルを読み取るには fopen または file_get_contents を使用します。前者はループで読み取ることができ、後者は一度に読み取ることができますが、どちらもファイルの内容を一度に読み込みます。ロードするファイルが数百Mなど特に大きく、Gサイズに達するとパフォーマンスが低下する場合、PHPで大きなファイルを処理するための関数またはクラスはありますか? 答えは「はい」です。

PHP は本当に「オブジェクト指向」になってきており、元の基本的な SPL メソッドのいくつかが次々とクラスを実装し始めています。

PHP 5.1.0 以降、SPL ライブラリには 2 つの標準ファイル操作クラス、SplFileObject と SplFileInfo が追加されました。 SplFileInfo は PHP 5.1.2 以降で実装されています。

文字通りの意味から、SplFileObject は SplFileInfo よりも強力であることがわかります。

はい、SplFileInfo は、ファイル サイズ、ファイル アクセス時間、ファイル変更時間、サフィックス名、その他の値など、ファイルの一部の属性情報を取得するためにのみ使用され、SplFileObject は SplFileInfo のこれらの機能を継承します。

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

/**ファイルの内容を X 行目から Y 行目まで返します (php5、php4 をサポート)
* @param string $filename ファイル名
* @param int $startLine 開始行番号
* @param int $endLine 終了行番号
* @戻り文字列
​*/
function getFileLines($filename, $startLine = 1, $endLine=50, $method='rb') {
$content = array();
$count = $endLine - $startLine
; // PHPのバージョンを確認する(SplFileObjectを使用しているため、PHP>=5.1.0)
If(version_compare(PHP_VERSION, '5.1.0', '>=')){
$fp = new SplFileObject($filename, $method);
$fp->seek($startLine-1);//N 行目に移動すると、seek メソッドのパラメーターは 0 からカウントされます
for($i = 0; $i $content[]=$fp->current();// current() は現在の行の内容を取得します
$fp->next();//次の行
}
}else{//PHP $fp = fopen($filename, $method);
If(!$fp) は「エラー: ファイルを読み取れません」を返します;
for ($i=1;$i fgets($fp);
}
for($i;$i $content[]=fgets($fp);// ファイル行の内容を読み取ります
}
fclose($fp);
}
return array_filter($content); //array_filter フィルター: false,null,''
}

追伸: !$fp->eof() または !feof($fp) には「最後まで読む」という判定が追加されていません。また、この判定は多くの動作をテストする必要があります。時間が経てばわかるでしょうが、ここに追加する必要はまったくありません。

上記の関数から、特にファイル行数が非常に多く、次のコンテンツをフェッチする必要がある場合、SplFileObject を使用する方が以下の fgets よりもはるかに高速であることがわかります。 fgets には 2 つのループが必要で、$endLine 回ループする必要があります。

この方法には多大な労力がかかり、最も効率的な方法を見つけるために多くの中国語の書き方をテストしました。改善すべき点があると思われる方がいらっしゃいましたら、ぜひお知らせください。

行 35270 ~ 35280 の内容を使用して返します:

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

エコー '

';<br>
var_dump(getFileLines('test.php',35270,35280));<br>
エコー '
';
別の例を見てください

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

関数 readBigFile($filename, $count = 20, $tag = "rn") {

$content = "";//最終コンテンツ
$current = "";//現在読んでいるコンテンツのストレージ
$step= 1;//毎回ステップする文字数
$tagLen = strlen($tag); $start = 0;//開始位置
$i = 0;//カウンター
$handle = fopen($filename,'r+');//ファイルを読み取り/書き込みモードで開き、ポインターはファイルの開始位置を指します
while($i fseek($handle, $start, SEEK_SET);//ポインターはファイルの先頭に設定されます
$current = fread($handle,$step);//ファイルを読み取る
$content .= $current;// 結合された文字列
$start += $step;//ステップサイズに従って前に進みます
//区切り文字の長さに基づいて文字列の最後の数文字を切り詰めます
$substrTag = substr($content, -$tagLen); if ($substrTag == $tag) { //改行か他の区切り文字かを判断します
$i++; $content .= "
"; }
}
//ファイルを閉じる
fclose($ハンドル); //結果を返す
$content を返します。 }
$filename = "csdn.sql";//読み取るファイル
$tag = "n";//行区切り文字 ここでは二重引用符を使用する必要があることに注意してください
$count = 100;//読み取られた行数
$data = readBigFile($filename,$count,$tag); $data をエコー;




注: PHP の fseek と fread を組み合わせると、関数によって渡される変数 $tag の値は、システムによって異なりますが、ファイル内のデータの特定の部分を任意に読み取ることができます。違いは、Windows は「rn」を使用し、linux/unix は「n」を使用し、Mac OS は「r」を使用します。


http://www.bkjia.com/PHPjc/632771.html

www.bkjia.comtru​​e

http://www.bkjia.com/PHPjc/632771.html

PHP で大きなファイルを読み取る場合と、通常のファイルを読み取る場合とでは、いくつかの違いがあります。ファイルが数百 MB または GB の場合、通常の PHP ではファイルの読み取りが遅くなったり、スタックしたりする可能性があります。
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPおよびPython:さまざまなパラダイムが説明されていますPHPおよびPython:さまざまなパラダイムが説明されていますApr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPython:彼らの歴史を深く掘り下げますPHPとPython:彼らの歴史を深く掘り下げますApr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPとPythonの選択:ガイドPHPとPythonの選択:ガイドApr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとフレームワーク:言語の近代化PHPとフレームワーク:言語の近代化Apr 18, 2025 am 12:14 AM

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

PHPの影響:Web開発などPHPの影響:Web開発などApr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?Apr 17, 2025 am 12:24 AM

PHPでは、クローンキーワードを使用してオブジェクトのコピーを作成し、\ _ \ _クローンマジックメソッドを使用してクローン動作をカスタマイズします。 1.クローンキーワードを使用して浅いコピーを作成し、オブジェクトのプロパティをクローン化しますが、オブジェクトのプロパティはクローニングしません。 2。\ _ \ _クローン法は、浅いコピーの問題を避けるために、ネストされたオブジェクトを深くコピーできます。 3.クローニングにおける円形の参照とパフォーマンスの問題を避けるために注意し、クローニング操作を最適化して効率を向上させます。

PHP対Python:ユースケースとアプリケーションPHP対Python:ユースケースとアプリケーションApr 17, 2025 am 12:23 AM

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。