我有这个PHP脚本,每秒都会从我的网站中的每个用户调用:
<?php
$user = addslashes($_POST["user"]);
require("db.php");
$query = mysql_query("SELECT * FROM users WHERE username = '$user'");
$row = mysql_fetch_array($query);
$id = $row["id"];
$date = date( 'Y-m-d H:i:s', time() );
$query = mysql_query("SELECT * FROM activity WHERE id_key = '$id'");
if (mysql_num_rows($query) > 0)
{
$upload = mysql_query("UPDATE activity SET last_activity = '$date' WHERE id_key = '$id'");
if (!mysql_query($upload))
{
die('Error: ' . mysql_error());
}
}
else{
$sql = "INSERT INTO activity (id_key, last_activity) VALUES ('$id', '$date')";
if (!mysql_query($sql))
{
die('Error: ' . mysql_error());
}
}
我想知道是否有更好的方法或者每次如何删除数据库连接,因为这会使我的主机cpu重载。
答案 0 :(得分:1)
使用 PHP 你无法避免这种情况。 Apache 通过启动新的独立 PHP 进程来处理每个请求,因此每个新进程都需要与数据库建立新连接。
实际上,建立连接所需的时间很短,但肯定不是“几微秒”。取决于您的基础设施,建立连接需要几毫秒 请注意,驱动程序始终建立一个 TCP 套接字,可能已加密,因此在连接时会有一些损失,但在标准 PHP 环境中无法避免。