欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP 数据库读写分离的经典例子

程序员文章站 2022-03-18 11:12:30
...
  1. /**
  2. * mysql读写分离
  3. * edit: bbs.it-home.org
  4. */
  5. class db
  6. {
  7. public function __construct($sql)
  8. {
  9. $chestr = strtolower(trim($sql));
  10. //判断sql语句有select关键字的话,就连接读的数据库,否则就连接写数据库
  11. if(substr($chestr,0,6)=='select')
  12. {
  13. echo 'I am using select db..
    ';
  14. $link = mysql_connect("127.0.0.1:3306", "root", "") or die("Could not connect: " . mysql_error());
  15. mysql_select_db("test");
  16. $result = mysql_query($sql);
  17. while ($row = mysql_fetch_array($result, MYSQL_NUM))
  18. {
  19. printf("%s %s", $row[0],$row[1]);
  20. }
  21. echo mysql_get_host_info($link).mysql_get_server_info($link).mysql_get_proto_info($link).mysql_get_client_info().'
    ';
  22. }
  23. else
  24. {
  25. echo 'I am using insert db..
    ';
  26. $link = mysql_connect("127.0.0.2:3306","root","") or die("Could not connect: " . mysql_error());
  27. mysql_select_db("test");
  28. $result = mysql_query($sql);
  29. echo @mysql_affected_rows($result);
  30. echo mysql_get_host_info($link).mysql_get_server_info($link).mysql_get_proto_info($link).mysql_get_client_info().'
    ';
  31. }
  32. }
  33. }
  34. $d = new db(" update `users` set `select`='fasdf' where `id` =1");
  35. $d2 = new db(" SELECT * from `users`");
复制代码

附,数据库读写分享的相关解释。

数据库的读写分离,可以有效降低降低数据库的压力。

一个主数据库,多个从数据库的架构,实现读写分离,是经常用到的方案。 主数据库提供写操作,从数据库提供读操作。 其实分散数据库的压力,并不一定要读写分离,但是读写分离还是有自身的诸多好处的。 比如: 1、有利于数据库的负载均衡实现。 2、有利于实现主从数据库热备份。如果不分离,那么就要考虑做双向热备份策略了。 这个的配置比较复杂,并且出问题后也比较麻烦。 3、有利于保持数据库的高可用性,特别是在数据库集群的环境。 4、最后,实现读写分离后,对mysql的查询速度以及稳定性会更有信心。