【问题标题】:PHP exec, multiple commands, don't waitPHP exec,多个命令,不要等待
【发布时间】:2019-01-27 15:35:44
【问题描述】:

我正在尝试通过 exec 运行多个命令,而无需等待我的 PHP 脚本。到目前为止,这就是我所拥有的,但它无法正常工作

unzip_file_command ; process_files_command ; delete_unneeded_files  > /dev/null 2>&1  &

关于为什么这不能正常工作的任何想法?我尝试将 nohup 添加到整个命令的开头,每个命令的开头,并在每个 ; 之前添加 > /dev/null。我尝试了一堆组合,但没有运气。有什么想法吗?谢谢!

【问题讨论】:

标签: php exec


【解决方案1】:

如果使用 exec 运行多个命令,则需要指定

 > /dev/null 2>&1 &

对于每个命令,不只是在 exec 结束时单独执行一次。如果只放在最后,则应用到最后一个命令,然后等待其他命令。

然后您需要将每个命令放在括号内,因为与号。所以最终的结果是:

(commandA > /dev/null 2>&1 &) ; (commandB > /dev/null 2>&1 &)

【讨论】:

  • 这样吗? unzip_file_command > /dev/null 2>&1 & ; process_files_command > /dev/null 2>&1 & ; delete_unneeded_files > /dev/null 2>&1 & 因为那不起作用。它甚至不处理第一个命令。
  • 哦,对不起。如果那里有 & 符号,则需要在括号内添加命令。所以 (unzip_file_command > /dev/null 2>&1 &) ; (process_files_command > /dev/null 2>&1 &) ; (delete_unneeded_files > /dev/null 2>&1 &)
【解决方案2】:

所以我最终创建了一个 shell 脚本并通过 exec 运行它,最后带有 '> /dev/null 2>&1 &' 。看来问题已经解决了。

【讨论】:

    猜你喜欢
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 2014-03-07
    • 2018-05-31
    • 2013-09-07
    相关资源
    最近更新 更多