我正在使用Ratchet websockets进行聊天系统工作。从终端命令" php"启动服务器是必要的。但是我需要在用户打开聊天页面时自动发生这种情况。我尝试过exec(),shell_exec()和system(),但问题是我的chat-server.php文件没有返回消息,只是启动服务器导致localhost继续加载。 这是chat-server.php文件:
<?php
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use MyApp\Chat;
require dirname(__DIR__) . '/vendor/autoload.php';
$server = IoServer::factory(
new HttpServer(
new WsServer(
new Chat()
)
),
8080
);
$server->run();
这是我的消息控制器加载视图:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Messages extends CI_Controller {
function index()
{
$this->load->view( 'includes' );
$this->load->view( 'messages_view' );
}
}
答案 0 :(得分:1)
这是因为PHP等到exec(),shell_exec()和system()命令完成。您必须更改调用exec的方式,以使其启动一个单独的进程。可在此处找到解决方案most simple way to start a new process/thread in PHP