我有一个多线程,主要思想是在控制台中运行nmap命令,并以有序的方式传递结果。
示例:
shell_exec之后的结果
命令4命令1命令2命令3
如何以有序的方式获得结果?
命令1命令2命令3命令4
public function __construct($arg) {
$this->arg = $arg;
}
public function run() {
$salida = shell_exec($comando);
}`
发布于 2016-03-07 13:00:10
如果您在单独的线程中启动它们,则作业不太可能以启动时的相同顺序完成。您将需要跟踪它们,并等待所有操作完成。您没有包含太多代码,但这里有一个通用示例:
// 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脚本来处理该目录中的结果。
https://stackoverflow.com/questions/35700906
复制相似问题