gpt4 book ai didi

php - 在后台运行脚本并从 php 返回它的 pid

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:58 24 4
gpt4 key购买 nike

我尝试在 php 中调用一个应用程序:

ob_start();
passthru("(cd /opt/server/TrackServer/release && ./TrackServer& ) && pidof TrackServer");
$pid = ob_get_clean();
var_dump($pid);
exit;

目标是在它的路径中运行 TrackServer 并获取它的进程 ID,这样我就可以在做一些测试后关闭它。

当我在终端中运行命令时:

(cd /opt/server/TrackServer/release && nohup ./TrackServer&) && pidof TrackServer

我返回了正确的 pid 但在 php 中命令停止并且没有继续执行,TrackServer 已启动并正在运行但我必须从终端终止它以解锁 php 脚本,终止进程后 php 脚本打印我刚刚从终端关闭的进程的正确 pid。

  1. 为什么命令停止?

  2. 有没有办法让它以我尝试运行它的方式在 php 中运行(无需 fork 到新线程)?

最佳答案

来自passthru manual page : passthru() 函数类似于 exec() 函数,因为它执行命令。

这意味着您不能直接执行命令行,因为它会运行多个命令并依赖 shell 来根据需要实现后台和子 shell。

试试这个:

passthru("/bin/bash -c 'cd /opt/server/TrackServer/release && nohup ./TrackServer& && pidof TrackServer'");

关于php - 在后台运行脚本并从 php 返回它的 pid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20384794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com