[英]Connect to database for heavy traffic website Mysqli and PHP
在編碼時,我使用默認的連接配置:
//CONNECTION INFORMATION
DEFINE('DATABASE_USER', 'root');
DEFINE('DATABASE_PASSWORD', '*********');
DEFINE('DATABASE_HOST', 'localhost');
DEFINE('DATABASE_NAME', 'mydatabase');
// Override The Default Php.ini settings for sending mail
date_default_timezone_set("America/Indianapolis");
//CONNECTING
$con = mysqli_connect(DATABASE_HOST, DATABASE_USER, DATABASE_PASSWORD,DATABASE_NAME);
if (!$con) {
trigger_error('Could not connect to MySQL: ' . mysqli_connect_error());
}
但這是針對正常連接的網站,如果我有一個流量非常大的網站(如Facebook)或其他使用MySQL數據庫的網站,那么您每秒都有用戶,評論和更改數據。 是相同的方法還是有更好的方法來避免
MAX_USE_CONNECTIONS
警告,除了網站運行緩慢,但首次使用是正常現象,但后來日復一日地運行緩慢,直到重新啟動服務器為止。
我嘗試了其他每天使用不同數據庫的解決方案,但是我認為這不是解決方案,因為我希望將所有數據保留在一個數據庫中以進行搜索。
為了計數,我使用查詢為:
mysqli_query($con, "SELECT * FROM `TABLE` WHERE `id` = '$user_id'");
為了選擇和獲取數據,我使用:
$table = mysqli_query($con, "SELECT * FROM `TABLE` WHERE `id` = '$user_id'");
if(mysqli_num_rows($table) !== 0)
{
while($rows = mysqli_fetch_array($table))
{
$id = $rows['id'];
......
}
}
對於實時更新,我每隔一秒鍾就有新的更改,並且我使用ajax獲取數據。 是每個ajax調用都會打開新連接嗎? 獲取數據后是否必須關閉每個連接,為什么?
都是一樣的
是。
是每個ajax調用都會打開新連接嗎?
是。
獲取數據后我必須關閉每個連接,為什么?
不會。PHP會為您關閉它。
感謝您的寶貴時間和信息,以便讓我更有知識來避免編碼時的錯誤方式:)
您所有的編碼都是錯誤的,並且在某些情況下會是錯誤的。 只需學習,然后您就可以創建一個網站,該網站可以承受Facebook的1/1000000的訪問量。
但是,不可能將所有沉重的學習時間都放在常規答案的幾個段落中。 希望你能理解。
基准測試代碼的一種簡單方法是對其進行計時。
$time = microtime(true);
//- code to time
echo number_format( (microtime(true) - $time), 4 );
這樣,您之間的代碼的微時間將以秒為單位,精確到小數點后4位。 查看代碼在哪里花費很長時間來運行,並查看如何改進代碼,例如優化查詢等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.