ホームページ バックエンド開発 PHPチュートリアル PHP8.0でのファイル操作:ファイル監視

PHP8.0でのファイル操作:ファイル監視

May 14, 2023 pm 02:21 PM
php ファイル操作 ファイル監視

Web アプリケーションの継続的な開発により、PHP は Web 開発において最も重要なプログラミング言語の 1 つになりました。非常に柔軟なプログラミング言語である PHP の各バージョンには、さまざまなニーズやアプリケーション シナリオを満たすための新機能と最適化が備わっています。

PHP 8.0 バージョンでは、ファイル監視という非常に実用的なファイル操作機能が追加されました。この機能は、ファイルのバックアップ、ファイル同期、ログ監視など、ファイル変更の監視と処理が必要なアプリケーション シナリオに非常に適しています。

この記事では、PHP 8.0 のファイル監視機能とそれを実際のプロジェクトに適用する方法について詳しく説明します。

1. PHP ファイル監視の基本的な使い方

PHP 8.0 では、spl 拡張ライブラリの SplFileInfo クラスと SplFileObject クラスを使用してファイル監視を実現できます。

1. ファイル監視に SplFileInfo クラスを使用する

$file = new SplFileInfo('/path/to/file');
while (true) {
    clearstatcache();
    if ($file->getSize() != $size) {
        // 文件大小已经改变,进行处理
    }
    sleep(1);
}
ログイン後にコピー

上記のコード例では、SplFileInfo クラスを使用してファイルをインスタンス化し、while ループを通じてファイルを監視します。 SplFileInfo クラスを使用する利点は、ファイル サイズ、ファイル変更時間、ファイル タイプなど、ファイルに関するさまざまな情報を取得するためのメソッドが多数提供されることです。ファイルの内容やサイズが変更された場合、対応する操作を実行できます。

2. ファイル監視に SplFileObject クラスを使用する

SplFileInfo クラスの使用に加えて、SplFileObject クラスを使用してファイルを直接読み書きしたり、ファイルの変更を監視したりすることもできます。以下はサンプル コードです:

$file = new SplFileObject('/path/to/file', 'r');
while (true) {
    clearstatcache();
    if ($file->getSize() != $size) {
        // 文件大小已经改变,进行处理
    }
    sleep(1);
}
ログイン後にコピー

上記のサンプル コードでは、SplFileObject インスタンスを作成し、while ループを通じてファイルの変更を監視しました。 SplFileInfo クラスとは異なり、「r」モードを使用してファイルを読み取るため、ファイルをリアルタイムで読み取り、操作できます。

SplFileObject クラスを使用するもう 1 つの利点は、flock() 関数を使用してファイルをロックできるため、複数のプロセスが同じファイルに対して同時に動作するという問題を回避できることです。

2. PHP ファイル監視の高度な使用法

PHP 8.0 バージョンのファイル監視では、基本的な使用法に加えて、いくつかの高度な使用法も提供されます。

1. ファイル監視に inotify 拡張ライブラリを使用する

Linux システムでは、ファイル監視に inotify 拡張ライブラリを使用できます。 PHP 8.0 では、inotify 拡張ライブラリがデフォルトで組み込まれているため、この拡張ライブラリの関数をファイル監視に直接使用できます。

inotify_init() 関数を呼び出して inotify オブジェクトを作成します:

$inotify = inotify_init();
ログイン後にコピー

次に、inotify_add_watch() 関数を使用してファイルに監視を追加します:

$watch_descriptor = inotify_add_watch($inotify, '/path/to/file', IN_MODIFY);
ログイン後にコピー

上記のコードinotify_add_watch() 関数を使用して、IN_MODIFY イベントの監視をファイルに追加します。このイベントは、ファイルが変更されるとトリガーされます。

最後に、stream_select() 関数を使用してイベントの発生を待機します:

$read = array($inotify);
$write = $except = null;
stream_select($read, $write, $except, null);
ログイン後にコピー

上記のコード例では、stream_select() 関数を使用して inotify オブジェクトでのイベントを待機します。ファイルが変更されると、IN_MODIFY イベントがトリガーされます。

2. ファイル監視に ReactPHP を使用する

ReactPHP は、イベント駆動型モデルに基づく PHP フレームワークであり、高性能でスケーラビリティの高い Web アプリケーションの構築に使用できます。 ReactPHP フレームワークにおいてファイル監視は非常に重要な機能の 1 つであり、ReactPHP のファイル監視コンポーネントを使用することでファイル監視を実現できます。

最初に ReactPHP コンポーネントをインストールします:

composer require react/event-loop react/stream
composer require react/filesystem:^0.1.0
ログイン後にコピー

次に、ファイル監視に Monitor コンポーネントを使用します:

$loop = ReactEventLoopFactory::create();
$monitor = new Monitor('/path/to/file', $loop);

$monitor->on(Monitor::EVENT_MODIFIED, function () {
    // 文件内容已经改变,进行处理
});

$loop->run();
ログイン後にコピー

上記のコード例では、ReactPHP の Monitor コンポーネントを使用して監視しますファイル監視。ファイルの内容が変更されると、EVENT_MODIFIED イベントがトリガーされ、それに応じて処理できます。

3. ファイル監視に関する注意事項

ファイル監視機能を使用する場合、次の点に注意する必要があります:

1. キャッシュのクリア

ファイル監視を実行する場合、clearstatcache() 関数を使用してファイル キャッシュをクリアする必要があります。そうしないと、プログラムがファイルの変更を正しく識別できない可能性があります。

2. 待ち時間を適切に設定する

while ループを使用してファイルの変更を待機する場合は、待ち時間を適切に設定する必要があります。待ち時間が短すぎるとシステム リソースが無駄に消費され、待ち時間が長すぎるとファイルの変更が時間内に検出されなくなります。

3. ファイルのロック

複数のプロセスが同じファイルに対して同時に動作すると、ファイルの競合や上書きが発生します。したがって、ファイル操作を実行するときは、この問題を回避するために flock() 関数を使用してファイルをロックする必要があります。

4. 概要

ファイル監視は、ファイルの変更をリアルタイムで監視し、対応する処理をタイムリーに実行するために使用できる、特に Web アプリケーションにおいて非常に実用的な機能です。 PHP 8.0 では、SplFileInfo クラス、SplFileObject クラス、inotify 拡張ライブラリ、ReactPHP およびその他のツールを使用してファイル監視を実装できます。ファイル監視機能を使用する場合は、キャッシュのクリア、適度な待ち時間の設定、ファイルのロックなどに注意する必要があります。

以上がPHP8.0でのファイル操作:ファイル監視の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

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:28 PM

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

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

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

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

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

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

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

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

See all articles