如何在后台运行php文件(websocket服务器)到Web服务器(www.example.com)

时间:2017-09-13 12:04:44

标签: php

我已经下载了一个websocket示例,并在本地使用xamp服务器进行了测试,它运行正常。它有一个名为sever.php的php文件,我必须首先从命令提示符运行它来运行服务器。之后,我可以连接到websocket服务器并可以发送消息。我的笔记本电脑一切运行正常。现在我已将相同的项目上传到我的网络服务器(比如www.example.com)。 由于没有运行server.php,客户端无法连接到服务器,因此如何在后台运行server.php到Web服务器。 在论坛中搜索后,我发现了一个可以在后台运行php文件的功能,如下所示。

$cmd='nohup php php-socket.php >/dev/null 2>&1 & echo $!';
function execInBackground($cmd){ 
if (substr(php_uname(), 0, 7) == "Windows"){ 
    pclose(popen("start /B ". $cmd, "r"));  
} 
else { 
    exec($cmd);
    //echo 'command executed';   
} } 

从索引文件中我调用此函数来运行服务器但不起作用。 这个功能能够运行吗?如果是这样我应该在哪里调用这个函数?

在控制台中我收到以下错误。

  

WebSocket连接到' ws:// localhost:8090 / dmp / chat_websocket / php-socket.php'失败:连接建立错误:net :: ERR_CONNECTION_REFUSED   (匿名)@(索引):25

非常感谢有人在这方面帮助我。

1 个答案:

答案 0 :(得分:0)

2年8个月后,没有人添加解决方案。

我也没有办法解决您的问题:)。但是我需要您从服务器访问命令行,并且可以肯定的是,您的提供者不能通过它来访问您的服务器。

您错过了一个例子,就是调用函数 execInBackground($ cmd)

$cmd='nohup PHP php-socket.php >/dev/null 2>&1 & echo $!';
function execInBackground($cmd){ 
 if (substr(php_uname(), 0, 7) == "Windows"){ 
    pclose(popen("start /B ". $cmd, "r"));  
 } 
 else { 
    exec($cmd);
    //echo 'command executed';   
 } 
}

在末尾添加此内容

execInBackground($cmd);

修改: 我做一些测试。 我将其添加到页面顶部(例如server.php)

/* Remove the execution time limit */
ini_set("max_execution_time", "0");
ini_set("max_input_time", "0");
set_time_limit(0);

确保有适当的位置可以阻止它。

只需在浏览器中调用脚本(www.example.com/server.php) 只需关闭选项卡,它将永远运行。您的websocket脚本不应停止运行。