【问题标题】:PHP Exec: Without Waiting, Without Discarding the Output, Without nohupPHP Exec:无需等待,无需丢弃输出,无需 nohup
【发布时间】:2011-11-09 09:28:42
【问题描述】:

我需要像这样在 PHP 中运行一个命令:

exec('dosomething > saveit.txt');

除了我不希望 PHP 等待它完成。我也不想丢弃输出,也不想使用 nohup,因为我将它用于同一目录中的其他内容。

我也试过pclose(popen('dosomething > saveit.txt','r'));,但没用,它还在等待。

【问题讨论】:

  • nohup 可以写入不同的输出文件。如果您立即调用pclose,那么系统当然必须等待子进程。

标签: php linux exec nohup


【解决方案1】:

在命令末尾添加ampersand,因此:

exec('dosomething > saveit.txt &');

【讨论】:

  • 你知道Windows系统对应的吗?
【解决方案2】:

exec() 的文档中有一个有趣的comment 说:

花了很长时间才弄清楚我接下来要发布的内容。如果您想在后台执行命令而不让脚本等待结果,您可以执行以下操作:

 <?php
  passthru("/usr/bin/php /path/to/script.php ".$argv_parameter." >> /path/to/log_file.log 2>&1  &");
 ?>

【讨论】:

  • 唯一的问题是我没有尝试运行另一个 PHP 脚本。但是我总是可以只使用 exec 命令制作一个 PHP 脚本,然后用它运行那个 PHP 脚本。这是一个解决方案。
猜你喜欢
  • 2015-03-27
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
  • 2013-03-25
  • 1970-01-01
相关资源
最近更新 更多