2

我有一个名为 iter.php 的 php 文件。我可以通过 bash 输入轻松地运行它:

php iter.php >> result.txt

我可以通过重复它来连续运行它多次。但是,我需要同时运行它们。因此,换句话说,如果我连续运行两个实例,它们应该或多或少同时完成并在彼此之后立即输出,而不是在彼此之后运行。

我可以在 bash 中完成这个吗?

4

2 回答 2

4

通过使用&

php iter.php >> result.txt & php iter.php >> result.txt

你可以测试这是通过

php iter.php >> result.txt & sleep 10000 & php iter.php >> result.txt
于 2013-02-18T07:07:19.267 回答
2
!#/bin/bash

seq $1 | while read num do
    php iter.php >> $2 &
done

上面的 bash 脚本应该同时运行$1(第一个脚本参数)进程,并在$2(第二个 bash 参数)中输出结果。

请注意,如果您的 PHP 脚本执行得非常快,您实际上可能看不到并发运行的结果,而是看到顺序运行的结果。这取决于是否:

  • 您的系统是单核或多核:您更有可能在以后获得并发结果,
  • 在单核上,脚本执行花费的时间超过一个调度“周期”,以及在该周期之后,bash 进程是否会控制 CPU(假设所述周期具有固定的持续时间,这不一定是真的),
  • 对输出的访问可以是并发的(在所有条件相同的情况下,shell 重定向应该允许这样做)
于 2013-02-18T07:35:42.097 回答