プロジェクトのPHPで使用されるが、理由は、長い時間のかかる作業で、フロントエンドの提出後、あなたはサーバーの非同期応答を必要としています。 非同期サーバーのようにMQ、fsocket、Swooleとを含むプログラム、さまざまな。(推奨学習:swooleビデオチュートリアル) Swoole純粋なC言語を使用して、非同期マルチスレッドサーバーのPHP言語、非同期、TCPを提供 / UDPネットワーククライアント、非同期のMySQL、非同期のRedis、データベース接続プール、AsyncTask、メッセージキュー、ミリ秒タイマーを非同期のファイルの読み取りと書き込み、非同期DNSクエリー。Swooleは、HTTP / WebSocketのサーバー/クライアント、HTTP2を建てた。0サーバ側。 最も重要なのは、PHP言語のための完全なサポート。したがってSwooleは、非同期サーバー非同期応答、プッシュ、作業スケジュールされたタスクのシリーズを提供を構築するために使用されます。 Swooleは、コンパイルとインストールの方法により、C言語で記述されています。インストールの依存関係があります: PHP -5.3.10 以降 のgcc -4.4 以降 メイク autoconfの PCREは(CentOSのシステムがコマンドを実行することができます:yumのPCREをインストールする - develの)インストール: は、phpize #コマンドが存在しない場合は、前に追加してくださいPHPの実際のパス ./ のconfigure メイク sudoのメイクは、インストール 後にコンパイルされ、必要のPHP。iniファイルは、拡張の追加 拡張を = swoole。SO サーバ・ クラスのサーバー{ プライベート $ Servのを、 公共の 機能__construct(){ $この - > Servの= 新しい新 swoole_server( "0.0.0.0"、 9501 ); $この - > serv->セット(配列( // 'worker_num' => 1、CPUサーバの1~4倍の正常セット//数 。「デーモン化する'=> 1、 // デーモンを実行 ' max_request '=> 10000、 ' task_worker_num「=> 1、 // プロセスのタスクの数 」 task_ipc_mode "=> 3、配列($この、 'onReceive' )); $この - > serv->( 'タスク'、上の配列($この、 'onTask' )); これを$ - > serv->上( '完了'、配列($これを、 'onFinish' )); これを$ - > serv-> ()を開始。 } パブリック 関数 onReceive(swoole_server $ SERV、$ FD、$ from_id、$データ){ // 放入任务队列、开始执行 $ TASK_ID = $ SERV - >タスク($データ)。 } 公共の 機能 onTask($ SERV、$ TASK_ID、$ from_id、$データ){ // 做一些事情 } 客户端 クラスのクライアント{ プライベート $クライアント、$ IP、$ポート、$ paramsは、 パブリック 関数 __construct($ IP、$ポート、$ paramsは) { $この - > IP = $ IP ; この$ >ポート= - $ポートを。 これは、$ >のparams = - $のparams ; これを$ - >クライアント= 新しい swoole_client(SWOOLE_SOCK_TCP、SWOOLE_SOCK_ASYNC); $この - >クライアント- > SET(配列( 'open_length_check' => trueに、 'package_length_type' => 'N'、 'package_length_offset' => 0、 // Nバイトのパケット長の値です ' package_body_offsetは'=> 4、 // バイトは長さを計算し始める ' => 2,000,000、package_max_length ' // プロトコルの最大長 )); // イベントコールバック関数を設定 $この - >クライアント- > ON('接続」を配列($この 'のonConnect' )); $この - >クライアント- > ON( '受信'、配列($この'onReceive' )); これを$ - >クライアント- >上の(、 '閉じる' 配列($これは、 'OnCloseの' )); これを$ - >クライアント- >上の( 'エラー'、配列($この、 'のonError' )); // 发起网络连接 $この - >クライアント- >(接続$ IP、$ポート、3 ); } パブリック 関数 onReceive($ CLI、$データ){ エコー "受付:"。$データ。"\ n"は、 $データ = パック( 'N'、strlenを($データ))。$データ; $ CLI - >送信($データ)。 $ CLI - > 近いです(); } パブリック 関数は、(OnCloseの$ CLI ) { エコー "接続近い\ n"を。 } パブリック 関数のonError() { エコー "接続に失敗しました\ n" 。 } }