代码
<?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 :(得分:0)
1
我正在使用棘轮插座。我已经建立了一个新的服务器连接 我想阻止服务器运行。在这种情况下,我有 IP(主机名)和我的端口,那我怎么能阻止它呢?
我假设您当前通过在终端窗口或屏幕中将其作为php脚本运行来运行您的Ratchet服务器。
例如:php push-server.php
停止运行脚本后,服务器将停止运行。
2
是否可以建立永不停止的服务器连接?
是的,如果你的php脚本从终端停止工作,你必须手动重启它。最好使用Ratchet推荐的Supervisor(过程控制系统)等程序。
点击此链接了解详情http://supervisord.org/installing.html
supervisord服务将监控您的php脚本,如果崩溃适合生产环境,它将自动重启。
3
当我建立服务器连接时,第一天数据输出是完美的 从DB,但在第二天,错误生成为“连接是 由外国主机关闭“。但我仍然可以连接到该端口。
这很常见,我也注意到了。它通常发生在服务器负载过重或超时时。如果您看到此消息,您的JavaScript应检查此消息并重新启动新连接。您也可以在随机计时器之后再次尝试。
<强>编辑强>
此外,Ratchet \ Server \ IoServer的__construct方法需要3个prams,其中第3个是可选的。第一个和第二个需要是MessageComponentInterface和ServerInterface的对象。
public function __construct(MessageComponentInterface $app, ServerInterface $socket, LoopInterface $loop = null) {
实例化IoServer
的方式似乎不正确。