【问题标题】:Is it possible to run 3 line of code simultaneously?是否可以同时运行 3 行代码?
【发布时间】:2012-02-17 17:53:26
【问题描述】:

这段代码:

$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 个不同的页面并运行 dig 查找。我只知道如何用表格来做到这一点。这就是为什么我向您展示了上面的代码。我现在一片空白。

请帮助我。提前致谢。

【问题讨论】:

  • @MarkBaker Backticks run shell commands,其中/usr/bin/dig是其中之一。
  • 我的立场是正确的——我今天的新学习点
  • 您希望您的应用程序在这 10 秒内做什么?
  • @webbiedave:这只是一个例子。我可以有 100 个或更多的名称服务器来查找。而不是逐个查找,我想可能将它分成 10 个部分并同时运行 10 个挖掘查找。这将比在单个挖掘查询上运行 100 次查找要快。

标签: php multithreading process


【解决方案1】:

这不是多线程,而且,您尝试在域名服务器上运行 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));

希望有帮助

【讨论】:

  • 但不是所有的查找还是按顺序完成的吗?这将如何改变这种情况?
【解决方案2】:

有几种方法。

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

  2. 使用 php pcntl 来实现你的目标。

【讨论】:

    【解决方案3】:

    试试评论中提供的想法:

    Does PHP have threading?

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

    【讨论】:

    • 虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
    【解决方案4】:

    好吧,如果它在页面中运行,你也可以尝试使用Ajax,使用一些javascript库可以很容易地完成

    这里是 jquery 中 ajax 使用的文档

    http://api.jquery.com/category/ajax

    【讨论】:

      【解决方案5】:

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

      http://php.net/manual/en/function.exec.php

      【讨论】:

        猜你喜欢
        • 2022-01-14
        • 2018-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-05
        • 2011-08-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多