1

我需要一个例程同时发出 2 个或更多 dns 请求,但只使用第一个/最快的结果。

我如何从孩子那里退回答案,所以我只能得到一个结果?

$pid = pcntl_fork();

if ($pid == -1) die("could not fork");

if ($pid) {

  //parent

} else { 

  $pid2 = pcntl_fork(); 

  if ($pid2 == -1) die("could not fork"); 

  if ($pid2) {

    //parent-child

    exec("/usr/bin/dig @8.8.8.8 $name A +short +time=1+tries=1",$ips_array,$digreturn);

  } else {

    exec("/usr/bin/dig @8.8.4.4 $name A +short +time=1 +tries=1",$ips_array,$digreturn);

  }

}

print_r ($ips_array);

如果两个请求都返回,这将返回 2 倍的答案

4

1 回答 1

1

我建议看看socket_create_pair()

在 PHP 手册中是一​​个非常简短且简单的 fork()-parent 和 child 之间的进程间通信 (IPC) 示例。

Abd 使用 serialize() 和 unserialize() 你甚至可以传输复杂的数据类型,如数组......

于 2013-12-06T12:15:16.937 回答