[英]connected to mysql table depending on time
如果服務器時間在1-30秒之間連接到一個表,如果超過31-60秒連接到另一個表。
我需要這個的原因是因為我不確定,但如果10,000人正在訪問一個mysql表,這會大大減慢它。
我的代碼如下
<?php
header('Content-type: application/json');
$server = "localhost";
$username = "root1";
$password = "root1";
$database = "test";
$con = mysql_connect($server, $username, $password) or die ("Could not connect: " . mysql_error());
mysql_select_db($database, $con);
$sql = "SELECT id, name FROM post ORDER BY id";
$result = mysql_query($sql) or die ("Query error: " . mysql_error());
$records = array();
while($row = mysql_fetch_assoc($result)) {
$records[] = $row;
}
mysql_close($con);
echo $_GET['jsoncallback'] . '(' . json_encode($records) . ');';
?>
不確定我完全理解但是自從Unix Epoch以來,php的time()將返回秒。 如果是偶數,請將其連接到一個表,否則將另一個表連接......這將有效地分割流量......
<?php
$time = time();
$tableToAccess = ($time % 2 == 0) ? 'table_one' : 'table_two';
$db = new mysqli('localhost','username','password','database');
$result = $db->query("SELECT * FROM $tableToAccess");
?>
話雖這么說,由多個用戶運行的數據庫引擎會降低您的速度,而不是同時進行表訪問
我建議不要在應用程序代碼級別進行負載平衡。 如果你需要在不同的表中分配負載,你應該考慮設置分區和負載均衡的mysql集群,這樣就可以在數據庫級別上進行干凈的處理。 這里有一些鏈接可以進一步指導您:
您可以將連接超時設置為其中一個選項。 請參閱: http : //php.net/manual/en/mysqli.options.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.