首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP PECL线程结果顺序

PHP PECL线程结果顺序
EN

Stack Overflow用户
提问于 2016-02-29 21:33:45
回答 1查看 27关注 0票数 0

我有一个多线程,主要思想是在控制台中运行nmap命令,并以有序的方式传递结果。

示例:

shell_exec之后的结果

命令4命令1命令2命令3

如何以有序的方式获得结果?

命令1命令2命令3命令4

代码语言:javascript
复制
public function __construct($arg) {
    $this->arg = $arg;
}

public function run() {     

        $salida = shell_exec($comando);         

}

`

EN

回答 1

Stack Overflow用户

发布于 2016-03-07 13:00:10

如果您在单独的线程中启动它们,则作业不太可能以启动时的相同顺序完成。您将需要跟踪它们,并等待所有操作完成。您没有包含太多代码,但这里有一个通用示例:

代码语言:javascript
复制
// create jobs
$jobs[0] = new nmapJob(args0);
$jobs[1] = new nmapJob(args1);
...

// start jobs
foreach ($jobs as $job)
{
  $job.start();
}

// wait for jobs to finish
foreach ($jobs as $job)
{
  $job.join();
}

// display results
foreach ($jobs as $job)
{
  echo($job.salida);
}

但是..。我建议使用不同的技术。让shell命令像那样悬挂不是最好的做法,特别是当它可能需要一段时间才能运行时(就像nmap作业经常做的那样)。这要复杂得多,但是可以研究一下异步运行扫描。将它们派生为单独的进程,并将结果转储到一个目录中。扫描完成后,可以使用不同的PHP脚本来处理该目录中的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35700906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档