根据时间连接到mysql表

时间:2013-05-14 19:47:26

标签: php mysql

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

3 个答案:

答案 0 :(得分:1)

不确定我完全理解但是自从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");

  ?>

话虽这么说,多个用户运行的数据库引擎会降低你的速度,而不是同时进行表访问

答案 1 :(得分:1)

我建议不要在应用程序代码级别进行负载平衡。如果你需要在不同的表中分配负载,你应该考虑设置分区&amp;一个负载均衡的mysql集群,因此可以在数据库级别上进行干净的处理。这里有一些链接可以进一步指导您:

答案 2 :(得分:0)

您可以将连接超时设置为其中一个选项。看到: http://php.net/manual/en/mysqli.options.php