在Codeigniter中没有终端(NO AJAX)的页面加载时自动运行PHP服务器

时间:2016-03-09 16:34:56

标签: php codeigniter websocket ratchet

我正在使用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' );
    }
}

1 个答案:

答案 0 :(得分:1)

这是因为PHP等到exec(),shell_exec()和system()命令完成。您必须更改调用exec的方式,以使其启动一个单独的进程。可在此处找到解决方案most simple way to start a new process/thread in PHP