Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 可以同时运行3行代码吗?_Php_Multithreading_Process - Fatal编程技术网

Php 可以同时运行3行代码吗?

Php 可以同时运行3行代码吗?,php,multithreading,process,Php,Multithreading,Process,此代码: $ip1 = `/usr/bin/dig $host1`; $ip2 = `/usr/bin/dig $host2`; $ip3 = `/usr/bin/dig $host3`; 一个接一个地跑。问题在于挖掘响应速度是随机的。它可能很快,也可能超过10秒。我的问题是如何在同一页上同时运行这3行代码 我愿意接受其他方法,比如在3个不同的页面上运行。我有一个array\u块($input\u array,3)$input_array是mysql查询的结果,它包含我可以在上面3种不同的查找

此代码:

$ip1 = `/usr/bin/dig $host1`;
$ip2 = `/usr/bin/dig $host2`;
$ip3 = `/usr/bin/dig $host3`;
一个接一个地跑。问题在于挖掘响应速度是随机的。它可能很快,也可能超过10秒。我的问题是如何在同一页上同时运行这3行代码

我愿意接受其他方法,比如在3个不同的页面上运行。我有一个
array\u块($input\u array,3)
$input_array
是mysql查询的结果,它包含我可以在上面3种不同的查找中运行的值。我将查询分为3部分。现在的问题是,我不知道如何将3个部分发送到3个不同的页面并运行挖掘查找。我只知道如何使用表单。这就是我向您展示上述代码的原因。我现在一片空白


请帮帮我。提前感谢。

试试上面第二条评论中提供的想法:


据我所知,PHP没有多线程,但这是一种将每个线程作为后台进程运行的方法。

如果它在一个页面中运行,您也可以尝试使用Ajax,使用一些javascript库,这可以非常容易地实现

以下是jquery中ajax使用的文档


只要使用exec(),就可以在后台运行shell命令,并将第三个参数指向文件或其他输出流,否则PHP将在运行下一行代码之前等待命令完成运行


这不是多线程,而且,您尝试在域名服务器上运行3次查找,根据每台主机、NS服务器或主机文件的缓存时间,速度可能会有所不同

但如果我理解,您可以使用shell批处理实现您想要的:

$ dig uol.com.br; dig aol.com; dig nytimes.com
或者更好,因为dig支持它:

$ dig uol.com.br aol.com nytimes.com
这将使用一个命令行(与“;”连接)同时进行3次查找

要实现此功能,请使用阵列:

$hosts[] = 'aol.com';
$hosts[] = 'uol.com.br';
$hosts[] = 'nytimes.com';

passthru('dig '.implode(' ',$hosts));

希望这能有所帮助有两种方法

  • 编写一个小php脚本,它只返回一个ip并在数据库中更新。使用exec()运行这些进程。在主php程序中,等待所有进程状态在数据库中“完成”。从数据库中获取所有结果。注意:使用nohup参数在后台运行进程

  • 使用php pcntl实现您的目标


  • @MarkBaker就是其中之一。我的观点是正确的——我今天学到的新知识在这10秒内你希望你的应用程序做什么?@webbiedave:这只是一个例子。我可能需要查找100个或更多的名称服务器。而不是一个接一个地查找,我在想也许可以将它分成10个部分,同时运行10个挖掘查找。这比在一个挖掘查询上运行100次查找要快。但是不是所有的查找都是按顺序进行的吗?这是如何改变的?虽然这可以从理论上回答这个问题,但在这里包括答案的基本部分,并提供链接供参考。