【问题标题】:PHP - gethostbyname() taking 5 seconds to completePHP - gethostbyname() 需要 5 秒才能完成
【发布时间】:2018-04-04 10:51:39
【问题描述】:

我正在使用 gethostbyname 函数来获取我们域名的 IP 地址。

当它在 apache 中运行并在命令行中使用 php 时,它需要 5.0695459842682 秒才能获得完整结果。

<?php
    $domain_name = $argv[1];
    $stime = microtime(true);
    $ip =gethostbyname($domain_name);
    $etime = microtime(true);
    $ttime = $etime - $stime;
    echo "Total time for gethostbyname : $ttime\n";
    echo $ip."\n";
?>

当我通过传递 google.com 作为域在 php 命令行中运行脚本时,它返回以下结果。

gethostbyname 的总时间:5.0695459842682 216.58.203.142

谁能帮我出来把时间缩短到1秒以内。

问候, 维涅什库马尔 K

【问题讨论】:

  • 会不会是你的网络很慢? gethostbyname 进行 nslookup。我将$argv[1] 更改为example.org.(在某些服务器上需要尾随点)并获得0.000637s 的运行时间
  • 这与代码无关。这称为延迟,在网络环境中习惯它。

标签: php server vps shared-hosting


【解决方案1】:

也许问题是您的系统正在尝试使用 ipv6 连接到 dns 服务器,但您的网络配置不正确以成功完成此操作?如果是这样,您可以尝试禁用 ipv6。

在 Debian 中,您可以像这里一样这样做:https://wiki.debian.org/DebianIPv6#How_to_turn_off_IPv6

【讨论】:

  • 是的!我遇到了 10 秒的 php 脚本执行延迟问题,这是由 dns 查找引起的。我通过在 System Preferences → Network → WiFi → Advanced → TCP/IP 中设置 Configure IPv6: Link-local only 禁用了 IPv6。
【解决方案2】:

这取决于您使用的互联网速度。当我运行代码时,我的速度不到 2 秒,因为我的网速接近 90Mbps。

因此,除了提高互联网速度之外,您无法做任何事情来优化代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 2011-03-25
    • 2022-07-29
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多