tp6的分布式支配读和写仍旧是一个别系,这里我们分开操作,给用户展示的便是从数据库,后端添加文章便是主库,然后同步到从库。

1、配置数据库链接参数

目标:实现随机利用数据库展示信息,只是读操作。

php多个数据库php手把手教你做网站二十九thinkphp6安排多个数据库 GraphQL

测试:前台可以读取表中内容(存放的不一致),查看是否是随机显示的。

打开.env文件进行编辑

[DATABASE]TYPE = mysqlHOSTNAME = 127.0.0.1,127.0.0.1DATABASE = masterUSERNAME = rootPASSWORD = 123456,HOSTPORT = 3308,3307CHARSET = utf8DEBUG = trueprefix=np_

解释:

多个HOSTNAME用英文逗号分割;下边的账号密码端口等如果不是一样的也须要和HOSTNAME对应配置,都是利用“,”分割,要逐一对应;

2、编辑database.php

// 数据库支配办法:0 集中式(单一做事器),1 分布式(主从做事器) 'deploy' => 1,

找到deploy设置为1分布式支配,下边不要改,都是读,写入的也便是后真个我们单独建站连接主库。

配置完成,tp6利用的是mt_rand取随机数判断利用哪个数据库。

3、数据库交互写操作

比如浏览量没必要每次都去更新数据库,可以先利用redis缓存,存够1000的整数倍,再去更新数据库。

4、后台独立,也便是写

可以前后端分离,单独做一个网站(没有前端)利用ip访问或者独立的域名连接后台。

5、上传附件(jquery ajax跨域上传)

利用了nginx负载均衡,肯定是多个一样的网站,如果图片存放到一个站,别的就不能访问了,可以单独设置一个附件(压缩包,图片等)做事器,可以利用二级域名连接,这就哀求我们上传附件的时候,是上传到附件做事器。

jqueryURL

$.ajax({url: 'http://127.0.0.1:8020/admin.php/api/apdpic.html',})

API掌握器apdpic方法

public function apdpic(){ header("Access-Control-Allow-Origin : "); / header("Access-Control-Allow-Origin : http://127.0.0.1:8080"); 许可127.0.0.1:8080上传附件, 最好是填写好url,安全性可以得到提升 号表示所有的都许可 / }

解释:

URL填写附件做事器的处理地址;api掌握器加入header("Access-Control-Allow-Origin : ");许可跨域,最好是指定跨域的网址,号是许可所有的连接;上传完附件往后返回的图片地址,要带有网址;

也可以先传到后台做事器然后利用(php)ftp上传,或者是通过curl上传到附件做事器,觉得那样毕竟麻烦,直接设置跨域会比较大略。

也测试了利用jsonp跨域,但是不能上传附件。

6、thinkphp6实现读写分离(在一个站点)

我个人是不喜好这样的,负载均衡该当是均衡地读,也便是前台单独一个站点,后真个写是另一个独立的站点,看个人喜好吧。

独立后台的优点:可以提升安全性,由于我们的后台网址是不公开的,避免用户预测一些后台的信息。

.env配置按照1所述编辑,默认第一个是主库。

database.php

// 数据库支配办法:0 集中式(单一做事器),1 分布式(主从做事器) 'deploy' => 1, // 数据库读写是否分离 主从式有效 'rw_separate' => true, // 读写分离后 主理事器数量 'master_num' => 1, // 指定从做事器序号 'slave_no' => '',deploy设置为1(分布式);rw_separate设置为true,进行读写分离;master_num主库的数量,有几个就填写几个;slave_no从库的序号,也便是.env中HOSTNAME的序号(便是数组下标,0开始,count()-1结束),rw_separate设置为true的时候生效,指定往后只连接指定的数据库;

愿大家在新的一年心想事成,万事快意!