簡體   English   中英

連接到用於高流量網站Mysqli和PHP的數據庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM