2017-03-06 82 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中。我无法弄清楚。 –