【问题标题】:simultaneously exec multiple shell_exec() commands?同时执行多个 shell_exec() 命令?
【发布时间】:2017-03-29 08:16:18
【问题描述】:

您好,我想知道是否有人可以为我提供解决方案..

我有多个我想一次运行的 php 脚本实例,我可以使用 shell_exec() 半实现此目的,而无需等待除 pid 之外的响应。这非常有效。但是,当使用下面的方法执行此操作时,它可以很好地执行 100 次左右,但我需要它执行大约 1000 次,并且在 foreach 周围循环并一个一个地执行需要很长时间。

例子:

 $items = $array(daatabase entries);

   foreach($items as $i){
    $pid = shell_exec("execute the process.php");
   }

现在假设有

有没有办法批量发送命令而不是一次发送 1 个?

谢谢

【问题讨论】:

  • 您是否期望从您执行的脚本中得到响应?
  • 不,我不需要结果——我已经找回了 pid
  • 如何获得 pid ?你的 php 脚本?
  • $pid = shell_exec("nohup nice -n 10 /usr/local/bin/php -c /opt/cpanel/ea-php71/root/etc/php.ini -f /home/ USER/public_html/files/crons/test_process.php > /dev/null & echo $!")
  • 好吧,你正在将你的命令发送到后台,所以这很奇怪,迭代超过 1000 行需要这么长时间。

标签: php process command-line-interface shell-exec


【解决方案1】:

可能是 pthread 之类的东西?

https://www.sitepoint.com/parallel-programming-pthreads-php-fundamentals/ (我能找到的最新结果)

【讨论】:

  • 还没有看过 pthreads,不过我听说这是一个选项
  • 我不相信它是 PHP 的核心,但似乎已经很成熟了。我尝试过的唯一替代方法是调用一个端点,该端点使用 curl 执行操作,超时时间很短。就像这样:stackoverflow.com/questions/35874707/…
【解决方案2】:

您可以在后台执行process.php,而无需等待执行完成。所以会更快。同样shell_exec() 函数只返回输出,而不是pid。如果你需要pid,你必须使用exec()函数。

   $items = $array(daatabase entries);
   foreach($items as $i){
      shell_exec("execute the process.php > /dev/null 2>&1");
   }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-25
    • 2013-01-01
    相关资源
    最近更新 更多