php - 如何使用 PHP exec (linux) 启动后台进程?

标签 php linux process background exec

我知道有很多关于这个主题的帖子,但那里提到的所有解决方案似乎都不适合我。

我正在构建一个聊天客户端,我想在后台运行一个进程,它将监听我帐户中的传入消息。

代码如下:

$command = "cd classes/chat/inc/ && /usr/bin/php5 client.php --mysql_server=localhost --mysql_username=root --mysql_password= --mysql_database=covide --gtalk_user=xxx --gtalk_password=xxx --user_id=".$_SESSION['user_id']." &> /dev/null &";
exec($command);

我尝试了很多选项而不是这个:

&> /dev/null &

like >/dev/null 2>/dev/null & or > testoutput.php 2>&1 & echo $! (来自该论坛上的各种帖子),但没有成功。有没有人知道应该如何解决这个问题?

最佳答案

我有一个工作版本。但不是使用 exec();我们使用 curl POST 来运行我们的后台进程。问题是超时限制。您可以做的是让后台进程运行“监听传入消息”任务,然后在最后调用自身的另一个实例并关闭当前实例。

您可以在流程开始时使用类似的东西来确保它不会过早退出,但我没有发现这是必要的,即使未实现以下内容,它仍然运行良好:

/* Close our connection with calling file */
while(ob_get_level()) ob_end_clean();
header('Connection: close');
ignore_user_abort();
ob_start();
echo('Running in the background.');
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush();
flush();

关于php - 如何使用 PHP exec (linux) 启动后台进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6774406/

相关文章:

Linux Apache : what is the difference of DocumentRoot"path"and <Directory "path">?

linux - 从 yocto 类创建 ext3 图像

regex - 错误/usr/local/bin/perl : Argument list too long

linux - 可执行文件上的 setuid 似乎不起作用

php循环文件夹获取文件名和大小

php - 删除主键时删除所有外键数据,反之亦然

php - 在 WordPress 中使用 wp_signon() 时我应该清理吗?

PHP mkdir 失败

java - 当我通过网络调用 exec 并持续一段时间后,它失败了

windows - 获取有关 Windows 上其他进程的信息