我正在尝试在 PHP 中执行命令以在后台运行,以便 PHP 脚本不必等待脚本完成。我正在尝试使用这个:
exec('bash -c "exec nohup setsid COMMAND_HERE > /dev/null 2>&1 &"');
不幸的是,我的命令需要参数,而 /dev/null 2>&1 &
不起作用,我猜它会出现在我的 phantomjs 的系统参数中。
exec('bash -c "exec nohup setsid cd /var/www/html/smartgood/'.$i.' && phantomjs dump2.js '.date('d').' '.date('m').' > /dev/null 2>&1 &"');
其中日期('d')。' '.date('m')
是我运行脚本所需的参数。
知道如何修复它,或者是否有其他方法可以在 PHP 中运行该行,而不必等待我的 phantomjs 脚本完成?
最佳答案
其中有两个命令,因此只有第二个命令被重定向到/dev/null。为了使事情简单且易于维护,我会将所有这些命令移至一个单独的 bash 文件并运行该文件。
类似这样的东西(需要检查语法):
/path/to/script.sh:
#!/bin/bash
exec nohup setsid cd /var/www/html/smartgood/$1
phantomjs dump2.js $2 $3
然后运行它:
exec('bash -c /path/to/script.sh ' . $i .' ' .date('d').' '.date('m') . ' > /dev/null 2>&1 &"');
关于php - 如何在后台运行具有参数的命令的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32326067/