在 Codeigniter 中无需终端(NO AJAX)即可在页面加载时自动运行 PHP 服务器


Automatically run PHP server on page load without terminal (NO AJAX) in Codeigniter

我正在使用Ratchet websockets在聊天系统上工作。有必要从终端命令"php"启动服务器,但我需要在用户打开聊天页面时让这种情况自动发生。我尝试了exec(),shell_exec()和system(),但问题是我的聊天服务器.php文件没有返回消息,它只是启动服务器,导致本地主机继续加载。这是聊天服务器.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' );
    }
}

这是因为 PHP 会等到 exec()、shell_exec() 和 system() 命令完成。您必须更改调用 exec 的方式,以使其启动单独的进程。解决方案可以在这里找到在PHP中启动新进程/线程的最简单方法