ホームページ > バックエンド開発 > PHPチュートリアル > Workerman - 高性能 PHP ソケット フレームワーク

Workerman - 高性能 PHP ソケット フレームワーク

WBOY
リリース: 2016-06-20 12:36:10
オリジナル
1571 人が閲覧しました

Workerman は、PHP マルチプロセスと libevent イベント ポーリング ライブラリをベースにした高性能 PHP ソケット サーバー フレームワークです。PHP 開発者は 1 つまたは 2 つのライブラリを実装するだけで済みます。 RPC サービス、チャット ルーム サーバー、ゲーム サーバーなどの独自のネットワーク アプリケーションを開発できます。

Workerman の目標は、PHP 開発者が PHP ソケットや PHP マルチプロセスの詳細を理解していなくても、高性能のソケットベースのアプリケーション サービスを簡単に開発できるようにすることです。 Workerman 自体は、PHP プロセス管理モジュールとソケット通信モジュールを備えた PHP マルチプロセス サーバー フレームワークであるため、php-fpm、nginx、apache などのコンテナに依存せずに独立して実行できます。

特徴

  • PHP を使用して開発

  • PHP マルチプロセスをサポート

  • TCP/UDP をサポート

  • インターフェイスでさまざまなアプリケーション層プロトコルをサポート

  • libevent イベント ポーリング ライブラリをサポートし、高い同時実行性をサポート

  • スムーズなサービスの再起動をサポート

  • PHP ファイル更新の検出と自動読み込みをサポート

  • PHP の長時間接続をサポート

  • 指定されたユーザーとして子プロセスの実行をサポート

  • Telnet リモート制御をサポート

  • 高性能

マルチプレイヤー オンライン オタマジャクシ ゲーム、PHP-Json-Rpc、PHP-Thrift-Rpc、PHP-WebSocket チャット ルーム、PHP 統計監視システムなど、Workerman に基づくネットワーク アプリケーションが多数あります。

サンプルコード:

<?phpuse Workerman\Worker;require_once './Workerman/Autoloader.php';// 创建一个Worker监听2346端口,使用websocket协议通讯$ws_worker = new Worker("websocket://0.0.0.0:2346");// 启动4个进程对外提供服务$ws_worker->count = 4;// 当收到客户端发来的数据后返回hello $data给客户端$ws_worker->onMessage = function($connection, $data){    // 向客户端发送hello $data    $connection->send('hello ' . $data);};// 运行Worker::runAll();
ログイン後にコピー

パフォーマンスストレステスト

テスト環境:

系统:ubuntu 12.04 LTS 64位内存:8Gcpu:Intel&reg; Core™ i3-3220 CPU @ 3.30GHz &times; 4
ログイン後にコピー

ビジネスロジック:

hello world
ログイン後にコピー

結果:

短链接(每次请求完成后关闭链接,下次请求建立新的链接):条件: 压测脚本开500个线程,每个线程链接Workerman 10W次,每次链接发送1个请求结果: 吞吐量:3W/S , cpu:60% , 内存占用:4*8M = 32M
ログイン後にコピー
长链接(每次请求后不关闭链接,下次请求继续复用这个链接):条件: 压测脚本开1000个线程,每个线程链接Workerman 1次,每个链接发送10W请求结果: 吞吐量:13W/S , cpu:68% , 内存占用:4*8M = 32M
ログイン後にコピー
无流量抖动,无内存泄漏,性能非常强悍
ログイン後にコピー

ワーカーマン起動インターフェース:

ワーカーマンステータス表示インターフェース:

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート