本文目錄一覽:
PHP如何定時訪問資料庫獲取信息來更新頁面數據,我知道用ajax,不知道其中的格式
html
head
script src=”//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js”/script
script
$(document).ready(function(){
setInterval(function(){
$.ajax({
url: “backend.php”,
type: “GET”,
dataType: “json”,
success: function(json){
$(‘#output’).append(json.time + ‘br/’);
}
});
}, 1000);
});
/script
/head
body
div id=”output”/div
/body
/html
前台html就是用ajax發請求,一般用json格式發送與接收數據,然後設置setInterval每1秒循環發送一次請求,後台也很簡單:
?php
//backend.php
//把送回的數據json_encode()一下就可以了
echo json_encode(array(‘time’=time()));
?
php每天抓取數據並更新新
以前我用過querylist插件抓數據,伺服器寫和定時器,每天固定時間去運行腳本。朝這個方式試試
高並發下數據的更新,應該 update table xxx set num = num – 1 的方式,這種方式可以保證數據的正確性。
但是會出現 num 為負數的問題,如果庫存為負數,顯然是不合理的。
於是,需要將 num 欄位設置為 無符號整型,這樣就不會出現負數了,因為,如果減到負數,就會更新失敗。
但是這種依然會造成很多無用的更新語句的執行,是不合理的。
於是,update table xxx set num = num – 1 where num 0,
這樣當 num 等於0之後就不會去更新資料庫了,減少了很多無用的開銷。
這種方式被稱作「樂觀鎖」
此外,對於搶紅包這種非整數的操作,我們應該轉換為整數的操作。
關於搶購超賣的控制
一般搶購功能是一個相對於正常售賣系統來說獨立的子系統,這樣既可以防止搶購時的高並發影響到正常系統,
也可以做到針對於搶購業務的特殊處理。
在後台設計一些功能,可以就昂正常的商品加入到搶購活動中並編輯成為搶購商品,寫入到搶購商品表,當然
也可以把搶購商品表寫入redis而不是數據表。並且在原商品表寫入一個同樣的商品(id相同,用於訂單查看,
此商品不可購買)
如果是數據表,為了控制超賣,需要對錶進行行鎖,更新的時候帶上 where goods_amount 0。
如果是redis,使用 hincrby 一個負數來減庫存,並且 hincrby 會返回改變後的值,再來判斷返回值是否大於0,
因為redis每個命令都是原子性的,這樣不用鎖表就可控制超賣。
如何用php讓資料庫中某一個欄位隨時間自動更新
你說的是資料庫有一個updatetime的欄位吧,有兩種方法
1:
使用php,插入數據時帶一個time()的變數
2:
使用mysql自帶的:將欄位設置成 timestamp 類型,輸入默認值 CURRENT_TIMESTAMP ,這是一個mysql函數,這樣就不自動將當前時間插入
原創文章,作者:JKXSX,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/325270.html