質問: PHPを用いたWebSocketサーバの構築について質問があります。 今、WebSocketを使用してリアルタイムに情報をやりとりするシステムを作ろうと考えているのですが、どのようにスクリプトを実行してよいのかが分かりません。 `PHP WebSocket`(GitHub)を使い、サーバを構築しようと考えているのですが、 ブラウザから実行すると`Gateway Time-out(504)`が返ります。(ループで待機しているので当たり前なのかもせんが・・) コンソールから `php -q server.php` を打つと実行はできますが、HTTPサーバのように恒久的に使うのはダメだと思っています。 WebSocketを使って、次のような流れでリアルタイムにメッセージを伝えたいと思っています。 > > ブラウザ->HTTP・WebSocketサーバ->WebSocketクライアント > > > サーバというと、どうしても`systemctl start ***` のイメージがあり、サービスを起動するのがサーバだと思っています。 そもそもWebSocketやストリームの考え方が間違っているのだと自覚はしていますが、上記のシステムをどのように作れば良いのかを考えると混乱してしまい、解決できません。 どのようにすればPHPを使ってこのような仕組みを作れますか?(PHPが不可であれば他のものでも構いません) よろしくお願いします。 補足 -- **やりたいこと:Javascript+Websocketでアプリケーションにリアルタイムで情報を送信したい** ・HTTPサーバ(WebSocketクライアント) テキストボックスのあるHTMLがあり、内容が変わったらWS経由で送りたい ↓ ・Websocketサーバ `←今わからないところ PHPを使ってどのようにサーバを立てるのかが分からない` HTMLからデータを受信・クライアントへ送信 ・Java(WebSoketクライアント) WSサーバからデータを受信、テキストボックスに入った内容を出す --- ``` **環境** CentOS7 nginx1.9.10 PHP-FPM MariaDB ```
回答: > > サーバというと、どうしてもsystemctl start *** のイメージがあり、サービスを起動するのがサーバだと思っています。 > > > `Systemd`は設定ファイルを読み込んでサーバーを起動しているだけです。 なので、あなたの作ったPHP用に設定ファイルを作れば、同じように起動できますよ? シェルから`php -q server.php`などとやっても同様に起動できます。 ただし、シェルが終わると一緒に終了してしまいます。 `nohup php -q server.php &`とやっておけば、シェルが終わっても起動し続けます。 標準出力は`hohup.out`にリダイレクトされます。