2017-03-06 23 views
0
  • ラチェットソケットを使用しています。私は新しいサーバー接続を確立したので、サーバーの実行を停止したい。このシナリオで私はIP(ホスト名)とポートを持っていますので、どうすればそれを止めることができますか?
  • 終了しないサーバー接続を行うことはできますか?
  • 私はサーバー接続を作成すると、最初のデータ出力はDBから完璧ですが、2日目には「接続が外部ホストによって閉じられています」というエラーが生成されます。しかし、私はそのポートに接続することができます。

コードラチェットソケットに関する質問

<?php 
use Ratchet\Server\IoServer; 
use MyApp\Chat; 
use React\EventLoop\Factory; 
use React\ZMQ\Context; 
require dirname(__DIR__) . '/vendor/autoload.php'; 
require dirname(__DIR__) . '/src/MyApp/Chat.php'; 

$server = IoServer::factory(
    new Chat(), 
    6666 
); 

$server->run(); 

?> 

答えて

0

1.

私はラチェットソケットを使用しています。私は新しいサーバー接続 を確立しましたが、サーバーの実行を停止したいとします。このシナリオでは、私は IP(ホスト名)とポートを持っています。どうすればそれを止めることができますか?

ラチェットサーバは、ターミナルウィンドウまたは画面でPHPスクリプトとして実行しているとします。 例:php push-server.php

スクリプトの実行を停止すると、サーバーは停止します。

2.

それは決して終わらないサーバー接続を作成することは可能ですか?

はい、PHPスクリプトが端末から機能しなくなった場合は、手動で再起動する必要があります。ラチェットが推奨するSupervisor(A Process Control System)のようなプログラムを使用する方が良いです。

詳細はチェックこのリンクをhttp://supervisord.org/installing.html

supervisordサービスは、PHPスクリプトを監視し、それが本番環境のために適しているクラッシュした場合、自動的にそれを再起動します。

3.

私は、サーバー接続、初日のデータ出力は、DBから 完璧です、しかし、「接続は外部ホストによって を閉じている」として、二日目に、エラーが発生したとします。しかし、私はそのポートに接続することができます。

これは非常に一般的なことですが、私もそれに気付きました。これは通常、サーバーの負荷が高いときやタイムアウトするときに発生します。このメッセージが表示されたら、JavaScriptがこのメッセージをチェックし、新しい接続を再開する必要があります。また、ランダムタイマーの後に再試行することもできます。

編集

またラチェット\サーバー\ IoServerための__construct方法は、第三1がオプションであることそのうち3つのベビーカーが必要です。最初と2番目はMessageComponentInterfaceとServerInterfaceのオブジェクトである必要があります。

public function __construct(MessageComponentInterface $app, ServerInterface $socket, LoopInterface $loop = null) { 

IoServerをインスタンス化する方法が間違っているようです。

+0

1)私はフレームワークを使用しており、ポートへのサーバー接続を開始するアクションを開始しました。だから私は、サーバー接続を開始するためにターミナルを使用していません。 PHPとのサーバー接続を停止する他の方法はありますか? 2)私たちはソケットサービスを使用して、DBとサーバー間のデータをモバイルAppsに送信します。このためにJavascriptを使用していません。Frontendには何も表示されません。私は静的なデータを印刷する場合、それは数日後でも正常に返されます。しかし、DBからMysqlを使用しているデータは接続を閉じます –

+0

私はあなたを助けるためにもっとコードを見なければならないかもしれません。また、あなたがこのコードを実行しているターミナルでスクリプトを実行していない場合は?: '' '$ server-> run();' ''。 WebApp/Frameworkからポート6666に入ってくる着信メッセージをリッスンするスクリプトを用意する必要があります。 – arithran

+0

Nope。コードには問題はありません。問題はタイムアウトだと思います。タイムアウトは、MySQLまたはソケットにある可能性があります。私は把握することができません。 –