我已经下载了一个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
非常感谢有人在这方面帮助我。
答案 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脚本不应停止运行。