你的意思是:數(shù)據(jù)庫一發(fā)生變化,你就得知道是嗎?
創(chuàng)新互聯(lián)公司長期為超過千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為石獅企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì),石獅網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
PHP無法實(shí)現(xiàn)這功能,
只有LINUX 跑 shell腳本,每X分鐘執(zhí)行查詢語句
要么就是你每執(zhí)行一條語句,寫入日志。
樓上說的還是要定時(shí)檢測(cè)
不論怎么做,繞來繞去都是一樣的,都是需要定時(shí)檢測(cè)。
Ajax 控制一個(gè)異步PHP程序來檢測(cè)數(shù)據(jù)庫,然后返回值,供調(diào)用。
最好的辦法是,在應(yīng)用程序生命周期內(nèi),對(duì)于數(shù)據(jù)庫設(shè)置有事件鉤子,用于監(jiān)聽程序?qū)τ跀?shù)據(jù)庫的操作。這樣非常方便處理邏輯流程。
1 - 表的數(shù)據(jù)變化
表數(shù)據(jù)發(fā)生了變化,毫無疑問是寫操作,包括以下幾種情形:
新建條目 create
更新條目 update
刪除條目 delete
以上三種都是寫操作,會(huì)對(duì)表數(shù)據(jù)寫入。
2 - 事件鉤子
既然需要實(shí)時(shí)監(jiān)控,那么每個(gè)數(shù)據(jù)庫的操作,都需要考慮在內(nèi),這是全局的監(jiān)聽。
以laravel的Eloquent ORM 模型觸發(fā)事件,允許你掛接到模型生命周期的如下節(jié)點(diǎn): retrieved、creating、created、updating、updated、saving、saved、deleting、deleted、restoring 和 restored。事件允許你每當(dāng)特定模型保存或更新數(shù)據(jù)庫時(shí)執(zhí)行代碼。每個(gè)事件通過其構(gòu)造器接受模型實(shí)例。
模型內(nèi)添加事件監(jiān)聽鉤子
如果重用率很高,那么使用觀察者 Observer 方式進(jìn)行監(jiān)聽更為高效。
Laravel Observer
結(jié)語
上面的方法要求讀者有l(wèi)aravel框架的使用基礎(chǔ),對(duì)于構(gòu)建中大型應(yīng)用非常有利。
可以用腳本來實(shí)現(xiàn);
思路:
1.創(chuàng)建一個(gè)ceshi.txt文件,內(nèi)容是數(shù)據(jù)庫內(nèi)數(shù)據(jù)數(shù)量;
2.腳本內(nèi)容查詢數(shù)據(jù)庫數(shù)量,讀取并更新ceshi.txt內(nèi)的數(shù)量,判斷查詢出的數(shù)量大于ceshi.txt內(nèi)的數(shù)量就是新增,小于就是刪除,并執(zhí)行php程序;
參考思路如下:
1、在監(jiān)聽的時(shí)候把監(jiān)聽到的內(nèi)容存儲(chǔ)起來,數(shù)據(jù)庫/文件/緩存都行。
2、在瀏覽器能訪問的腳本中把內(nèi)容顯示出來就行了;
3、或者直接用websocket來監(jiān)聽,接受到數(shù)據(jù)直接寫在頁面上。
那你可以在插入數(shù)據(jù)庫那里設(shè)置監(jiān)聽呀,一有插入就往Android推送消息。
不然你只能通過每隔一段時(shí)間刷新一下讀取數(shù)據(jù)庫,看看有沒有更新,有就推送,沒有就繼續(xù)監(jiān)聽,這個(gè)你可以自己設(shè)置更新時(shí)間。