如何让我的PHP代码更快?

时间:2017-07-03 08:54:17

标签: php mysql

我在服务器端使用php来管理MySQL数据。 我必须请求一个API,它给我一个用户列表。我需要检查每个用户是否在数据库中。 如果是,我会更新他的信息。 如果没有,我将他插入数据库。

问题是每次都有超过2000多个用户,我在PHP中的代码非常慢(有时我得到504网关超时)。 我们很快就会有更多用户。

如何让我的代码更快? Php好吗?

改进后编辑我的codeV3:

    $userList = getFromAPI();

      foreach ($userList as $userId){

        $db = dbConnect();


  $tagList = implode(",", $user["tagid_list"]);



          $query = $db->prepare(
      "INSERT INTO USERS(id, name, group) VALUES(:id, :name, :group)
       ON DUPLICATE KEY UPDATE name=values(name), group=values(group)"
          );

          $query->execute([
        "id"=>$id,
        "name"=>$name,
        "group"=>$group
          ]);
        }

3 个答案:

答案 0 :(得分:3)

也许尝试将Result : {"error_code":"54001","error_msg":"Invalid Sign”} 放在你的foreach之外? 我不知道是否需要在每个周期中打开连接。这也可能是耗时的。

答案 1 :(得分:2)

您可以使用单个查询:

INSERT INTO users (id, name)
VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Cecil')
ON DUPLICATE KEY UPDATE name = VALUES(name);

简而言之:您插入新行,但如果已经存在(密钥重复),则会更新它。您可以在循环中构建插入值,因此最终只能使用单个查询而不是4000 +。

了解更多here

答案 2 :(得分:1)

首先从foreach lopp中获取数据库中的所有用户id并将其缓存在某个变量中。应该会更好。