gpt4 book ai didi

php - 优化MySqli请求

转载 作者:行者123 更新时间:2023-11-29 07:26:19 27 4
gpt4 key购买 nike

我正在构建一个像控制台一样工作的网站。我有一个状态脚本,用于检查页面是否离线或您是否已列入黑名单/白名单。我通过在数据库中查找 IP 来做到这一点。然后我使用开关来引导用户。我使用javaScript进行重定向,因为该网站使用ajax,并且我无法获取 header('Location: xxx');来使用它(另一个问题)。

当我使用状态页面运行网站时,它的加载速度会慢两倍,并且每次用户使用命令时页面加载此脚本都无济于事。

您对如何优化它以加快加载速度有什么建议吗?我对所有想法持开放态度。感谢您抽出时间。

 if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
};

$conn = new MySQLi('localhost', 'xxx', 'xxx', 'xxx');

$statusRank = "";

$sql = "SELECT enable FROM global WHERE enable = '1' AND setting = 'frontend'";
$query = $conn->query($sql) or die ($conn->error);
if(mysqli_num_rows($query)) {
$statusRank = "offline";
}

$sql = "SELECT ip FROM blacklist WHERE ip = '$ip'";
$query = $conn->query($sql) or die ($conn->error);
if(mysqli_num_rows($query)) {
$statusRank = "blacklist";
}

$sql = "SELECT ip FROM whitelist WHERE ip = '$ip'";
$query = $conn->query($sql) or die ($conn->error);
if(mysqli_num_rows($query)) {
$statusRank = "whitelist";
}

switch ($statusRank) {
case "blacklist":
?><script>window.location.replace("include/blacklist.php");</script><?php
break;
case "whitelist":
break;
case "offline":
?><script>window.location.replace("include/offline.php");</script><?php
break;
default:
};

最佳答案

以下是一些想法,从最容易实现的开始:

  • 确保您在 blacklistwhitelist 表中的 ip 列上有索引。
  • 我对 PHP 不太熟悉,但您可能应该使用持久连接。打开数据库连接是一项昂贵的操作。请参阅php connection pooling mysql了解更多详情。
  • 最后,您可以将三个查询合并在一起,而不是计算行数,只需检查是否找到 IP。像这样的东西:
SELECT
CASE WHEN EXISTS
(SELECT * FROM global WHERE enable = '1' AND setting = 'frontend') THEN 'T' ELSE 'F'
END AS offline,
CASE WHEN EXISTS
(SELECT * FROM blacklist WHERE ip = '$ip') THEN 'T' ELSE 'F'
END AS blacklisted,
CASE WHEN EXISTS
(SELECT * FROM whitelist WHERE ip = '$ip') THEN 'T' ELSE 'F'
END AS whilelisted

关于php - 优化MySqli请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34398464/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com