【问题标题】:CPU usage is extremely high with below code以下代码的 CPU 使用率非常高
【发布时间】:2015-07-15 21:43:11
【问题描述】:

我使用了下面的代码。 我是 PHP 和 Mysql 的新手...

我在循环中做错了吗?

abc 表有 70562 条记录 ip2 表有 3833421 条记录..

有什么改进的建议吗?

$sql = "SELECT * FROM abc where ip_country IS NULL";

$query = mysqli_query($con, $sql) or die (mysqli_error($con));

while ($row = mysqli_fetch_array($query)) {
    $id = $row["subid"];
    $ip = $row["ip"];

    //Convert Ip to Number 
    $ipnumberconversion = ip2long($ip);

    //Select Ip From Ip Table
    $sql2 = "UPDATE abc as a ,
                    ip2 as b
            SET a.ip_state = b.REGION,
                a.ip_postalcode = b.ZIPCODE,
                a.ip_city = b.CITY, 
                a.ip_country = b.COUNTRY_NAME  
            WHERE a.subid = '$id' AND b.IP_FROM <= $ipnumberconversion AND b.IP_TO >= $ipnumberconversion";
    $query2 = mysqli_query($con, $sql2) or die (mysqli_error($con));
 }

【问题讨论】:

  • ip2long() php.net/manual/en/function.ip2long.php 存在,甚至对于 mysql dev.mysql.com/doc/refman/5.0/en/… - 您可以使用 SQL 连接而不是循环来连接两个表。或者换句话说:是的,你的代码效率很低。
  • 看起来像一次性的东西?如果是这样,这很重要
  • 这段代码到底有什么问题?高 CPU 使用率不是编程“问题”......这是一个设计问题。
  • 硬件比人工便宜,这就是我告诉我老板的 ;-)
  • 根据@Sven 建议更新

标签: php mysql updates cpu-usage cpu-speed


【解决方案1】:

如果你在本地主机上尝试这个,它是正常的。 CPU使用率的最大部分导致mysql进程(具体更新表中的值)。

有很多可能性。 CPU性能低,MySQL设置不好等

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    相关资源
    最近更新 更多