2017-03-06 40 views
0
  • 我正在使用棘輪插座。我建立了一個新的服務器連接,我想停止服務器運行。在這種情況下,我有IP(主機名)和端口,所以我怎麼能阻止它?
  • 是否有可能建立永不結束的服務器連接?
  • 當我建立一個服務器連接時,第一天數據輸出是完美的數據庫,但在第二天,錯誤生成爲「連接被外部主機關閉」。但我仍然可以連接到該端口。

代碼查詢棘輪插座

<?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腳本停止在終端工作,你必須手動重新啓動它。最好使用由Ratchet推薦的Supervisor(過程控制系統)等程序。

檢查此鏈接瞭解更多信息http://supervisord.org/installing.html

的supervisord服務將要監視你的PHP腳本,如果它崩潰這是適合於生產環境中會自動重新啓動它。

3.

當我做一臺服務器連接,第一天的數據輸出爲DB完美 ,但在第二天,將產生錯誤的「連接是 國外主機關閉」。但我仍然可以連接到該端口。

這很常見,我也注意到了。通常在服務器負載過重或超時時發生。如果您看到此消息,您的JavaScript應檢查此消息並重新啓動新連接。您也可以在隨機計時器之後再次嘗試。

編輯

同樣對於棘輪\服務器\ IO服務器的__construct方法需要3名嬰兒車,其中第三一個是可選的。第一個和第二個需要是MessageComponentInterface和ServerInterface的對象。

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

實例化IoServer的方式似乎不正確。

+0

1)我正在使用框架,我已經啓動了一個操作來啓動到端口的服務器連接。所以我沒有使用終端來啓動服務器連接。有沒有其他方式來停止與PHP的服務器連接? 2)我們只使用套接字服務從數據庫和服務器之間傳輸數據到移動應用程序。我們沒有爲此使用任何Javascript,因爲我們在前端沒有顯示任何內容。如果我打印任何靜態數據,即使幾天後它也會成功返回。但是來自使用Mysql的數據庫的數據關閉了連接 –

+0

我可能不得不查看更多的代碼才能幫助您。另外,如果你沒有在終端中運行腳本,你從哪裏運行這個代碼?:'''$ server-> run();'''。您必須有一個腳本從您的webApp/Framework監聽端口6666上的任何傳入消息。 – arithran

+0

沒有。代碼中沒有問題。我想這個問題是超時。超時可能在Mysql或Socket中。我無法弄清楚。 –