前邊介紹了負(fù)載均衡,mysql同步,接下來(lái)介紹tp6分布式部署多個(gè)數(shù)據(jù)庫(kù),實(shí)現(xiàn)讀寫分離。
成都創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,先為紅崗等服務(wù)建站,紅崗等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為紅崗企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
tp6的分布式部署讀和寫仍然是一個(gè)系統(tǒng),這里我們分開(kāi)操作,給用戶展示的就是從數(shù)據(jù)庫(kù),后端添加文章就是主庫(kù),然后同步到從庫(kù)。
1、配置數(shù)據(jù)庫(kù)鏈接參數(shù)
目標(biāo):實(shí)現(xiàn)隨機(jī)使用數(shù)據(jù)庫(kù)展示信息,只是讀操作。
測(cè)試:前臺(tái)可以讀取表中內(nèi)容(存放的不一致),查看是否是隨機(jī)顯示的。
打開(kāi).env文件進(jìn)行編輯
說(shuō)明:
2、編輯database.php
找到deploy設(shè)置為1分布式部署,下邊不要改,都是讀,寫入的也就是后端的我們單獨(dú)建站連接主庫(kù)。
配置完成,tp6使用的是mt_rand取隨機(jī)數(shù)判斷使用哪個(gè)數(shù)據(jù)庫(kù)。
3、數(shù)據(jù)庫(kù)交互寫操作
比如瀏覽量沒(méi)必要每次都去更新數(shù)據(jù)庫(kù),可以先使用redis緩存,存夠1000的整數(shù)倍,再去更新數(shù)據(jù)庫(kù)。
4、后臺(tái)獨(dú)立,也就是寫
可以前后端分離,單獨(dú)做一個(gè)網(wǎng)站(沒(méi)有前端)使用ip訪問(wèn)或者獨(dú)立的域名連接后臺(tái)。
5、上傳附件(jquery ajax跨域上傳)
使用了nginx負(fù)載均衡,肯定是多個(gè)一樣的網(wǎng)站,如果圖片存放到一個(gè)站,別的就不能訪問(wèn)了,可以單獨(dú)設(shè)置一個(gè)附件(壓縮包,圖片等)服務(wù)器,可以使用二級(jí)域名連接,這就要求我們上傳附件的時(shí)候,是上傳到附件服務(wù)器。
jqueryURL
API控制器apdpic方法
說(shuō)明:
也可以先傳到后臺(tái)服務(wù)器然后使用(php)ftp上傳,或者是通過(guò)curl上傳到附件服務(wù)器,感覺(jué)那樣畢竟麻煩,直接設(shè)置跨域會(huì)比較簡(jiǎn)單。
也測(cè)試了使用jsonp跨域,但是不能上傳附件。
6、thinkphp6實(shí)現(xiàn)讀寫分離(在一個(gè)站點(diǎn))
我個(gè)人是不喜歡這樣的,負(fù)載均衡應(yīng)該是均衡地讀,也就是前臺(tái)單獨(dú)一個(gè)站點(diǎn),后端的寫是另一個(gè)獨(dú)立的站點(diǎn),看個(gè)人喜好吧。
獨(dú)立后臺(tái)的優(yōu)點(diǎn):可以提升安全性,因?yàn)槲覀兊暮笈_(tái)網(wǎng)址是不公開(kāi)的,避免用戶猜測(cè)一些后臺(tái)的信息。
.env配置按照1所述編輯,默認(rèn)第一個(gè)是主庫(kù)。
database.php
愿大家在新的一年心想事成,萬(wàn)事如意?。。?/p>
?php
//?以?MySQL?為例:
mysql_connect('127.0.0.1',?'root',?'root',?3306);??//?連接數(shù)據(jù)庫(kù)
mysql_select_db('test');???????????????????????????//?選擇數(shù)據(jù)庫(kù)
mysql_query('set?names?utf8');?????????????????????//?執(zhí)行SQL
//?插入數(shù)據(jù)語(yǔ)句
$sql?=?"INSERT?INTO?table?(username,?password)?VALUES?('Jack@163.com',?'123456')";
$r?=?mysql_query($sql);
if?(mysql_affected_rows())?{
echo?'新增成功';
}?else?{
echo?mysql_error();
}
數(shù)組吧,直接把數(shù)組轉(zhuǎn)字符串啊
implode() 函數(shù)返回由數(shù)組元素組合成的字符串。(適合一維數(shù)組)
$arr = array('Hello', 'World', 'I', 'love', 'Shanghai');
1 echo implode(" ",$arr);//加空格
the result : Hello World I love Shanghai
2 echo implode(",",$arr);//加逗號(hào)
the result : Hello,World,I,love,Shanghai
轉(zhuǎn)換數(shù)組為字符串后插入數(shù)據(jù)庫(kù)就可以了。
如果你兩個(gè)PHP主機(jī)在同一個(gè)局域網(wǎng)內(nèi)的話就可以.
把兩臺(tái)機(jī)子組在一個(gè)局域網(wǎng)內(nèi).路徑就像局域網(wǎng)內(nèi)部之間訪問(wèn)那樣.
那就不行了.
人家不會(huì)給你那樣做的.
$conn1=mysql_connect('...','...','...'); //將第一個(gè)數(shù)據(jù)庫(kù)連接資源保存到變量conn1中
$conn2=mysql_connect('...','...','...'); //將第二個(gè)數(shù)據(jù)庫(kù)連接資源保存到變量conn2中
然后在執(zhí)行查詢操作時(shí),指定使用哪個(gè)連接資源,如:mysql_query('select ....',$conn1);
希望可以幫到你,謝謝!
PHP向MySQL數(shù)據(jù)庫(kù)中寫入數(shù)據(jù)有三個(gè)步驟:
1,PHP和MySQL建立連接關(guān)系
2,打開(kāi)MySQL數(shù)據(jù)庫(kù)
3,接受頁(yè)面數(shù)據(jù),PHP錄入到指定的表中
1、2兩步可直接使用一個(gè)數(shù)據(jù)庫(kù)鏈接文件即可:conn.php
代碼如下
?php
mysql_connect("localhost","root","");//連接MySQL
mysql_select_db("hello");//選擇數(shù)據(jù)庫(kù)
?
當(dāng)然,前提是已經(jīng)安裝WEB服務(wù)器、PHP和MySQL,并且建立MySQL表“cnbruce”
mysql_connect()中三個(gè)參數(shù)分別為MySQL地址、MySQL用戶名和MySQL密碼
然后就是通過(guò)WEB頁(yè)面?zhèn)鬟f數(shù)據(jù),讓PHP通過(guò)SQL語(yǔ)句將數(shù)據(jù)寫入MySQL數(shù)據(jù)庫(kù)指定的表中,比如新建文件 post.php
代碼如下
?php
require_once("conn.php");//引用數(shù)據(jù)庫(kù)鏈接文件
$uname = $_GET['n'];//GET方法為URL參數(shù)傳遞
$psw = $_GET['p'];
$psw=md5($psw);//直接使用MD5加密
$sql = "insert into members(username,password) values ('$uname','$psw')";
mysql_query($sql);//借SQL語(yǔ)句插入數(shù)據(jù)
mysql_close();//關(guān)閉MySQL連接
echo "成功錄入數(shù)據(jù)";
?
測(cè)試頁(yè)面: ;p=i0514
即可向MySQL數(shù)據(jù)庫(kù)hello的members表中插入新的數(shù)據(jù)“cnbruce”到username字段、“i0514”到password字段
補(bǔ)充:讀取表
讀取表中的內(nèi)容,這里我們用while,可以根據(jù)具體情況,用for 或其他的.
代碼如下
while($row = mysql_fetch_array($result))
{
echo "div style="height:24px; line-height:24px; font-weight:bold;""; //排版代碼
echo $row['Topic'] . "br/";
echo "/div"; //排版代碼