此代码:
$ip1 = `/usr/bin/dig $host1`;
$ip2 = `/usr/bin/dig $host2`;
$ip3 = `/usr/bin/dig $host3`;
一个接一个地跑。问题是挖掘响应速度是随机的。它可能很快,也可能超过10秒。我的问题是如何在同一页面上同时运行这3行代码?
我愿意接受其他方法,例如在3个不同的页面中运行。我有array_chunk($input_array, 3)
。 $input_array
是mysql查询的结果,其中包含我可以在上面的3个不同查找中运行的值。我将查询分为3部分。现在问题是我不知道如何将3个部分发送到3个不同的页面并运行挖掘查找。我只知道如何用表格来做。这就是我向您展示上述代码的原因。我现在空白。
请帮帮我。提前谢谢。
答案 0 :(得分:1)
这不是多线程,而且,您尝试在域名服务器上运行3次查找,并且根据每台主机,NS服务器或主机文件的缓存时间,速度可能会有所不同。
但是,如果我理解,你可以使用shell批处理实现你想要的东西:
$ dig uol.com.br; dig aol.com; dig nytimes.com
甚至更好,因为挖掘支持它:
$ dig uol.com.br aol.com nytimes.com
这将只使用一个命令行同时进行3次查找,与';';
连接要实现此功能,请使用数组:
$hosts[] = 'aol.com';
$hosts[] = 'uol.com.br';
$hosts[] = 'nytimes.com';
passthru('dig '.implode(' ',$hosts));
希望有所帮助
答案 1 :(得分:1)
有两种方法。
写一个小的php脚本,它只返回一个ip并在数据库中更新。使用exec()运行这些进程。在主要的PHP程序中等待所有进程状态将在数据库中“完成”。从db获取所有结果。注意:使用nohup参数在后台运行进程。
使用php pcntl实现目标。
答案 2 :(得分:0)
答案 3 :(得分:0)
好吧,如果它在一个页面中运行,你也可以尝试使用Ajax,使用一些javascript库可以很容易地完成它
这里是jquery
中ajax用法的文档答案 4 :(得分:0)
只要使用exec(),就可以在后台运行shell命令,并将第三个参数指向文件或其他输出流,否则PHP会在运行下一行代码之前等待命令完成运行