問題タブ [swoole]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reactphp - ReactPHP/Amp/Swoole/etc にメッセージを送る方法。PHP-FPMから?
サービスとして永続的に実行される ReactPHP、Amp、Swoole などのフレームワークを使用して、サーバーで非同期タスクを処理するワーカー スクリプトを作成することを考えています (これらのフレームワークをまだ選択していないため、ソリューションこれらのいずれかが含まれていると役立ちます)。
私の Web エンドポイントは、通常どおり Apache + PHP-FPM によって引き続き管理されます。永続的に実行されているスクリプトにメッセージを送信して、非同期ジョブをできるだけ早く処理する準備ができていることを認識できるようにしたいと考えています。
Web エンドポイントからの擬似コード:
これらのフレームワークのいずれかで、PHP-FPM から永続的に実行されているスクリプトへの通信を通常どのように処理しますか? TCP / Unix ソケット サーバーをセットアップして、独自のメッセージング プロトコルを実装しますか? それとも、この問題に対処するための既製のソリューションがありますか?
注: ご参考までに、サードパーティのメッセージ キュー ソフトウェアを使用する予定はありません。データベース トランザクションの一部として非同期ジョブを保存する必要があるためです (保留中のコミットを含め、トランザクション全体が成功するかのいずれか)。またはトランザクション全体が破棄されます)。これは、雇用が失われないという私の保証です。最悪のシナリオで、実行中のサービスにメッセージを送信できない場合でも、後でデータベースから欠落したジョブが取得される可能性があります。
php - ワーカー プロセスのコールバックではなく、サーバー プロセス タイマーからの Swoole エラー 9009 メッセージですか?
Swoole を WebSocket サーバーとして使用しています。1 秒に 1 回、接続されているすべての WS クライアントにメッセージをブロードキャストする必要があります。
単純なアプローチ: サーバー$server->tick()
を起動する前にサーバー タイマーを設定します。
エラーが発生しました:
[2020-05-05 12:23:56 #21985.2] エラー swServer_tcp_send (ERRNO 9009) はマスター プロセスの接続にデータを送信できません
WebSocket メッセージをマスターからではなく、ワーカー プロセスからプッシュする正しい方法は何ですか?