对于比我更熟悉 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);
这样,它将复制会话,写入新数据并关闭它。
由于会话未关闭,打开它的新请求将会挂起,因为文件已被锁定。关闭它解决了这个问题。