php exec() 后台进程问题

2022-08-30 19:46:13

我正在尝试使用以下命令在后台处理文件,但它不执行任何操作。

exec("php csv.php $file $user > /dev/null &", $output);

如果我删除,那么文件处理,但不是在后台。> /dev/null &

exec("php csv.php $file $user", $output);

有什么想法吗?


答案 1

注意:

如果程序使用此函数启动,为了使它继续在后台运行,必须将程序的输出重定向到文件或其他输出流。如果不这样做,将导致PHP挂起,直到程序的执行结束。

http://php.net/manual/en/function.exec.php

所以:

exec("php csv.php $file $user > /dev/null &"); // no $output

答案 2

您是否考虑过使用屏幕?您可以启动在分离进程中运行的屏幕会话。输出将转到屏幕会话,您可以在另一个终端仍在运行时重新附加到该会话。

exec("screen -d -m -S my_php_session csv.php $file $user", $output);

推荐