国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ PHPフレームワーク Workerman Workerman を使用してリアルタイム監(jiān)視システムを?qū)g裝する方法

Workerman を使用してリアルタイム監(jiān)視システムを?qū)g裝する方法

Nov 07, 2023 am 11:00 AM
プログラミング workerman リアルタイム監(jiān)視

Workerman を使用してリアルタイム監(jiān)視システムを?qū)g裝する方法

インターネットの急速な発展とリアルタイム監(jiān)視に対する人々の需要の高まりに伴い、Web ベースのリアルタイム監(jiān)視システムの人気が高まっています。この記事では、Workerman を使用してリアルタイム監(jiān)視システムを?qū)g裝する方法を紹介します。このシステムは、ログ、パフォーマンス指標(biāo)、マシンの狀態(tài)など、必要に応じて複數(shù)のデータ タイプを監(jiān)視できます。また、管理者を支援するリアルタイム アラーム機(jī)能も提供します。システムの稼働狀況をタイムリーに把握します。

Workerman は、純粋な PHP で書かれた高性能 TCP/UDP サーバー フレームワークで、高い同時(shí)実行性、低いレイテンシー、簡単な拡張という特徴があります。 Workerman を使用すると、ロング リンク サービス、チャット ルーム、オンライン ゲーム サーバーなど、高性能で同時(shí)実行性の高いアプリケーション シナリオを簡単に実裝できます。以下では、Workerman を使用してリアルタイム監(jiān)視システムを?qū)g裝する方法を紹介します。

  1. Workerman アプリケーションの作成

Workerman を使用する前に、フレームワークをダウンロードしてインストールする必要があります。ここでは Linux 環(huán)境を例として、composer を使用してインストールします。ターミナルに次のコマンドを入力して Workerman をインストールします。

composer require workman/workerman

インストールが完了したら、PHP ファイルを作成して最初の Workerman アプリケーションを作成できます。

require_once DIR . '/vendor/autoload.php';

// ポート 2345 をリッスンし、次を使用して通信するワーカーを作成します。 WebSocket プロトコル
$ws_worker = new WorkermanWorker("websocket://0.0.0.0:2345");

// 外部サービスを提供する 4 つのプロセスを開始します
$ws_worker->count = 4;

// クライアントが正常に接続したら、ウェルカム メッセージを送信します。
$ws_worker->onConnect = function ($connection) {

$connection->send('Welcome to workerman!');

};

// クライアントがデータを送信すると、それを処理します。
$ws_worker->onMessage = function ($connection, $data) {

// 把收到的消息回顯給客戶端
$connection->send($data);

};

// クライアントがデータを送信するとき、切斷 接続されたら、プロセス
$ws_worker->onClose = function ($connection) {

echo "Connection closed

";
};

// Worker
WorkermanWorker を?qū)g行します。 :run();

上記のコードでは、ポート 2345 をリッスンし、WebSocket プロトコルを使用して通信するワーカーを作成しました。クライアントが正常に接続すると、ウェルカム メッセージが送信されます。クライアントがデータを送信すると、ウェルカム メッセージが送信されます。 , 受信したデータはクライアントにエコーされます; クライアントが切斷すると、接続が閉じられたことを示すメッセージが出力されます. 最後に Worker を起動(dòng)して実行します。

  1. リアルタイム監(jiān)視機(jī)能

Workerman アプリケーションを正常に作成できましたが、これではリアルタイム監(jiān)視のニーズが満たされません。次に、Workerman を使用してリアルタイム監(jiān)視機(jī)能を?qū)g裝する方法を紹介します。リアルタイムを明確にする必要があります 監(jiān)視システムはどのようなデータを監(jiān)視する必要がありますか? ここでは例としてログを取り上げます

2.1 監(jiān)視ログ

リアルタイム監(jiān)視システムは、業(yè)務(wù)システムで生成されたログをリアルタイムでフロントエンドにプッシュ表示 Worker の onMessage コールバック関數(shù)で業(yè)務(wù)システムのログディレクトリを監(jiān)視し、ログ內(nèi)容をリアルタイムでフロントエンドに送信できます。コードは次のとおりです:

require_once DIR . '/vendor /autoload.php';
use WorkermanLibTimer;
use WorkermanWorker;

$ws_worker = new Worker("websocket://0.0.0.0:2345");

$ ws_worker->count = 4;

$log_dir = '/path/to/log-dir/ ';
$monitor_interval = 1; // ログ ファイルを監(jiān)視する時(shí)間間隔、単位: 秒

$ws_worker->onMessage = function ($connection, $data) use($log_dir) {

// do something

};

$ws_worker->onClose = function ( $connection) {

echo "Connection closed

";
};

// モニターログ ファイル
Timer::add($monitor_interval, function () use($ws_worker, $log_dir ) {

if (!is_dir($log_dir)) {
    return;
}
$files = scandir($log_dir);
foreach ($files as $file) {
    if ($file == "." || $file == "..") {
        continue;
    }
    $filename = $log_dir . '/' . $file;
    if (is_file($filename)) {
        $fp = fopen($filename, 'r');
        $lastpos = $ws_worker->lastpos[$filename] ?? 0;
        fseek($fp, $lastpos);
        $data = fread($fp, filesize($filename) - $lastpos);
        fclose($fp);
        if (!empty($data)) {
            // 實(shí)時(shí)推送日志信息到前端
            foreach($ws_worker->connections as $con){
                if ($con->websocket) {
                    $con->send(json_encode(array(
                        'type' => 'log',
                        'data' => $data,
                        'filename' => $filename
                    )));
                }
            }
            // 更新上次讀取位置
            $ws_worker->lastpos[$filename] = ftell($fp);
        }
    }
}

});

Workerman は、トリガーできる Timer クラスを提供します。コールバック関數(shù)を定期的に使用すると、ログ ディレクトリを定期的に監(jiān)視できます。ログの內(nèi)容を読み取るときは、同じ位置の內(nèi)容を繰り返し読み込まないよう、最後に読み取った位置に注意する必要があります。ログの內(nèi)容を読み取った後、フロントエンドにプッシュしてリアルタイムに表示します。

2.2 リアルタイムアラーム機(jī)能の実現(xiàn)

リアルタイム監(jiān)視システムでは、リアルタイムアラーム機(jī)能も欠かせません。監(jiān)視により検知したアラームイベントが発生した際に、リアルタイムにアラーム情報(bào)をフロントエンドに送信できます。以下はアラート関數(shù)のコード例です:

require_once DIR . '/vendor/autoload.php';
use WorkermanLibTimer;
use WorkermanWorker;

$ws_worker = new Worker("websocket://0.0.0.0:2345");

$ws_worker->count = 4;

$alarm_interval = 1; //アラーム イベントの監(jiān)視時(shí)間間隔、単位: 秒

$ws_worker->onMessage = function ($connection, $data) {

// do something

};

$ws_worker-> ;onClose = function ($connection) {

echo "Connection closed

";
};

// アラーム イベントを監(jiān)視する
Timer::add($alarm_interval, function () use( $ws_worker ) {

// 監(jiān)控邏輯
$alarm_type = 'warning'; // 告警類型
$alarm_data = 'alarm data'; // 告警數(shù)據(jù)
if ($alarm_type && $alarm_data) {
    // 實(shí)時(shí)推送告警信息到前端
    foreach($ws_worker->connections as $con){
        if ($con->websocket) {
            $con->send(json_encode(array(
                'type' => 'alarm',
                'data' => $alarm_data,
                'alarm_type' => $alarm_type
            )));
        }
    }
}

});

アラーム イベントを定期的に監(jiān)視し、特定のビジネス ニーズに従って監(jiān)視ロジックが実裝されます。アラーム イベントの発生が検出されると、アラーム情報(bào)が表示されます。リアルタイムでフロントエンドにプッシュされます。

  1. 概要

Workermanを利用してリアルタイム監(jiān)視システムを?qū)毪工毪?、システムの稼働狀況をリアルタイムに把握し、システムの運(yùn)用保守の効率と精度を向上させることができます。この記事では、Workerman を使用して監(jiān)視システムにログ監(jiān)視とリアルタイム アラーム機(jī)能を?qū)g裝する方法を紹介し、対応するコード例も示します。これらの基盤により、特定のビジネス ニーズに応じて拡張し、より完全なリアルタイム監(jiān)視システムを完成させることができます。

以上がWorkerman を使用してリアルタイム監(jiān)視システムを?qū)g裝する方法の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中國語版

SublimeText3 中國語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

vscode settings.jsonの場(chǎng)所 vscode settings.jsonの場(chǎng)所 Aug 01, 2025 am 06:12 AM

settings.jsonファイルは、ユーザーレベルまたはワークスペースレベルのパスにあり、VSCODE設(shè)定のカスタマイズに使用されます。 1。ユーザーレベルのパス:WindowsはC:\ users \\ appdata \ roaming \ code \ user \ settings.json、macos is/users //settings.json、linux is /home/.config/code/user/settings.json; 2。Workspace-Level Path:.vscode/settings Project Root Directoryの設(shè)定

Python Parse Date Stringの例 Python Parse Date Stringの例 Jul 30, 2025 am 03:32 AM

DateTime.Strtime()を使用して、日付文字列をDateTimeオブジェクトに変換します。 1。基本的な使用法:「2023-10-05」は、「%y-%m-%d」を介したdatetimeオブジェクトとしての解析です。 2?!福/%d/%y」などの複數(shù)の形式をサポートして、アメリカの日付を解析する、「%d/%m/%y」を解析するために英國の日付を解析する、「%b%d、%y%i:%m%p」 3. dateutil.parser.parse()を使用して、不明な形式を自動(dòng)的に推測(cè)します。 4。.dを使用してください

CSSドロップダウンメニューの例 CSSドロップダウンメニューの例 Jul 30, 2025 am 05:36 AM

はい、一般的なCSSドロップダウンメニューは、JavaScriptなしで純粋なHTMLおよびCSSを介して実裝できます。 1.ネストされたULとLIを使用して、メニュー構(gòu)造を構(gòu)築します。 2。:Hover Pseudo-Classを使用して、プルダウンコンテンツのディスプレイと非表示を制御します。 3。位置の設(shè)定:親liの親relative、およびサブメニューは位置を使用して配置されます:Absolute; 4. submenuは表示されます:なし、それは表示されます:ホバリング時(shí)にブロック。 5.マルチレベルのプルダウンは、ネスティングを通じて、移行と組み合わせ、フェードインアニメーションを追加し、メディアクエリを備えたモバイルターミナルに適合させることができます。ソリューション全體はシンプルで、JavaScriptサポートを必要としません。これは大規(guī)模に適しています

Python Itertoolsの組み合わせの例 Python Itertoolsの組み合わせの例 Jul 31, 2025 am 09:53 AM

itertools.combinationsは、反復(fù)可能なオブジェクトから指定された數(shù)の要素を選択するすべての非反復(fù)的な組み合わせ(無関係な順序)を生成するために使用されます。その使用には、次のものが含まれます。1。繰り返しの順序を避けるために、( 'a'、 'b')、 'a'、 'c')など、リストから2つの要素の組み合わせを選択します。 2?!窤BC」や「ABD」などの文字列の3文字の組み合わせを取り、サブシーケンス生成に適しています。 3。2つの數(shù)値の合計(jì)が1 5 = 6などのターゲット値に等しい組み合わせを見つけ、ダブルループロジックを簡素化します。組み合わせと配置の違いは、順序が重要かどうかにあります。組み合わせはABとBAを同じと見なし、順列は異なると見なされます。

データエンジニアリングのPython etl データエンジニアリングのPython etl Aug 02, 2025 am 08:48 AM

Pythonは、ETLプロセスを?qū)g裝するための効率的なツールです。 1。データ抽出:データベース、API、ファイル、およびその他のソースからデータを抽出できます。Pandas、Sqlalchemy、Requests、その他のライブラリを介して。 2。データ変換:パンダを使用して、クリーニング、タイプ変換、関連性、集約、その他の操作を使用して、データの品質(zhì)を確保し、パフォーマンスを最適化します。 3。データの読み込み:PandasのTO_SQLメソッドまたはクラウドプラットフォームSDKを使用して、ターゲットシステムにデータを書き込み、書き込み方法とバッチ処理に注意してください。 4。ツールの推奨事項(xiàng):気流、ダグスター、長官は、ログアラームと仮想環(huán)境を組み合わせて、安定性と保守性を向上させるために、プロセスのスケジューリングと管理に使用されます。

Pythonプロパティデコレーターの例 Pythonプロパティデコレーターの例 Jul 30, 2025 am 02:17 AM

@Propertyデコレーターは、メソッドをプロパティに変換して、プロパティの読み取り、設(shè)定、削除制御を?qū)g裝するために使用されます。 1?;镜膜适褂梅ǎ篅propertyを介して読み取り専用屬性を定義します。これは、半徑に基づいて直接アクセスされた領(lǐng)域などです。 2。高度な使用法: @name.setterおよび @name.deleterを使用して、屬性の割り當(dāng)て検証と削除操作を?qū)g裝します。 3.実用的なアプリケーション:バランスが負(fù)でないことを確認(rèn)するために、BankAccountなどのセッターでデータ検証を?qū)g行します。 4.命名仕様:內(nèi)部変數(shù)はプレフィックスされ、プロパティメソッド名は屬性と一致し、統(tǒng)一されたアクセス制御はコードセキュリティと保守性を向上させるために使用されます。

Python pytestフィクスチャの例 Python pytestフィクスチャの例 Jul 31, 2025 am 09:35 AM

フィクスチャは、テスト用のプリセット環(huán)境またはデータを提供するために使用される関數(shù)です。 1. @pytest.fixtureデコレータを使用して、フィクスチャを定義します。 2。テスト関數(shù)にパラメーター形式にフィクスチャを注入します。 3。降伏前にセットアップを?qū)g行してから斷片を?qū)g行します。 4。関數(shù)、モジュールなどのスコープパラメーターを介して範(fàn)囲を制御します。 5.共有フィクスチャをconftest.pyに配置して、クロスファイル共有を達(dá)成し、それによってテストの保守性と再利用性を改善します。

PythonはMacアドレスの例を取得します PythonはMacアドレスの例を取得します Jul 30, 2025 am 02:59 AM

UUIDモジュールを使用して、サードパーティライブラリを必要とせずに、プラットフォーム上のマシンの最初のネットワークカードのMACアドレスを取得し、uuid.getNode()を介して標(biāo)準(zhǔn)形式に変換します。 2。サブプロセスを使用して、IPConfigやIfConfigなどのシステムコマンドを呼び出し、複數(shù)のネットワークカード情報(bào)を取得する必要があるシナリオに適したすべてのネットワークカードMACアドレスの定期的な抽出と組み合わせます。 3.サードパーティライブラリgetMacを使用するには、インストール後にget_mac_address()を呼び出して、インターフェイスまたはIPによるクエリをサポートしますが、追加の依存関係が必要です。要約すると、外部ライブラリが不要な場(chǎng)合は、UUIDメソッドが推奨されます。マルチネットワークカード情報(bào)を柔軟に取得する必要がある場(chǎng)合は、サブプロセスソリューションを使用して、依存関係GETMAをインストールできるようにすることができます。

See all articles