php - 如何在后台运行具有参数的命令的命令

标签 php linux bash command-line phantomjs

我正在尝试在 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/

相关文章:

php - 在 Woocommerce 的客户运输部分下向管理用户添加其他字段

xml - CURL 无法通过命令行发送超过 1024 字节的发布数据

python - shell 函数如何知道它是否在 virtualenv 中运行?

regex - 如何批量将前置年份移动到文件名的末尾?

php - 使用 paypal API REST 检查 laravel 5.2 中的 paymentID 和 PayID isset()

php - 如何使用 json_encode 操作输出?

php - 如何使用 Laravel 5.1 执行原始查询?

linux - 我如何打印矩阵的上三角

c - “struct in6_addr”没有名为 ‘s6_addr32’ 的成员,带有 -ansi

python - 如何在 USB 驱动器上可移植安装 pip?