后台运行命令未按预期工作

后台运行命令未按预期工作

对于比我更熟悉 Linux 的人来说,这可能相对容易。

我有以下命令,在后台运行 PHP 进程:

/usr/local/bin/php -r '$_COOKIE["PHPSESSID"]="cookie";$srv="server.name";$dir="/home/base/dir/";include("/home/x/public_html/newsletter/send.php");' > /home/x/public_html/newsletter_log.txt 2>&1 & echo $!

那些路径已被假的路径所取代。

该命令的想法是在后台运行一个进程,检索函数的 PIDexec()并允许用户导航到其他页面。

直到今天一切都运行正常,用户必须等待“后台”进程完成。

这非常糟糕,因为用户必须等待很长时间才能完成该过程:如果需要 5 分钟,则用户必须查看一个无聊的页面,而无法执行任何操作,直到该过程完成。

我知道&在脚本末尾使用是关键,但正如您所见,它就在那里!

抱歉,我问了个愚蠢的菜鸟问题。

答案1

命令没问题!没有任何问题。

这是我今天才突然意识到的一个问题。


问题是我有一个正在打开的会话。

我在 PHP 中写了这一行:

session_start();

但是我忘了关闭它。我的解决方案与此类似:

session_start();
$tmp = $_SESSION;
session_write_close();
$_SESSION = $tmp;
unset($tmp);

这样,它将复制会话,写入新数据并关闭它。

由于会话未关闭,打开它的新请求将会挂起,因为文件已被锁定。关闭它解决了这个问题。

相关内容