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

标签 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 connection to 'ws://localhost:8090/dmp/chat_websocket/php-socket.php' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED (anonymous) @ (index):25

如果有人在这方面帮助我,我将不胜感激。

最佳答案

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 脚本不应停止运行。

关于php - 如何在后台运行 php 文件(websocket 服务器)到 Web 服务器(www.example.com),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46197090/

相关文章:

javascript - 在php中设置外部css/js/jpg文件的过期时间

php - Yii2 DepDrop kartik

php - 限制分页页数

PHP 文件下载结合 MySQL 数据库条目(文件显示在浏览器中)

php - 在两个 csv 文件之间用 PHP 实现左连接

php - 将整个表单循环到 MySQL 数据库行中?

PHP登录页面到索引页面

php - 如何使用 PHP 在 sftp 服务器上写入文件?

php - CKEDITOR 和 PHP 和 MYSQL

php - Div刷新和滚动条问题