0

如果服务器时间在 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) . ');';
    ?>
4

3 回答 3

1

不确定我是否完全理解,但 php 的 time() 将返回自 Unix 纪元以来的秒数。如果它是偶数,则将其连接到一个表,否则连接到另一个表......这将有效地分割流量......

  <?php
    $time = time();
    $tableToAccess = ($time % 2 == 0) ? 'table_one' : 'table_two';

    $db = new mysqli('localhost','username','password','database');

    $result = $db->query("SELECT * FROM $tableToAccess");

  ?>

话虽如此,由多个用户运行的数据库引擎会减慢您的速度,而不是同时访问表

于 2013-05-14T19:55:41.817 回答
1

我建议不要在应用程序代码级别进行负载平衡。如果您需要在不同的表之间分配负载,您应该考虑设置分区和负载平衡的 mysql 集群,以便可以在数据库级别干净地处理。这里有几个链接可以进一步指导您:

于 2013-05-14T19:58:56.980 回答
0

您可以将连接超时设置为选项之一。见: http: //php.net/manual/en/mysqli.options.php

于 2013-05-14T19:57:42.880 回答