求個偽代碼每次循環一次 更新500個資料
將要大量更新的記錄推入佇列,然後消費佇列,記得打日誌,我們做佇列在於有序地執行任務,並且保證每個更新是一定完成的。
不知道具體的使用場景,不敢瞎BB
BB一下
取出一個大數組之後
$res = []; for ($x=0; $x<=($res/500); $x++) { $res = array_slice($res,0+500*$x,500); if($res) { update table set=value where id($res['id']);修改数据库 foreach($res as $key=>$value) { $res[$key]['某值'] = ‘某值’; } } }
1.如果是同一張表,並且有某種相同特徵某些數據可以使用where條件批量更新
update table set count=count+1 where id > 1 and id < 501
2.如果不同的表,且邏輯也不一樣,那要考慮是否會超時了,如果無需用戶買單的請求,可以採用fastcgi_finish_request 中斷用戶請求,再繼續執行代碼,或者採取定時任務的形式
fastcgi_finish_request
先確定總次數,然後 for 迴圈每次取 500 個更新就是了
將要大量更新的記錄推入佇列,然後消費佇列,記得打日誌,我們做佇列在於有序地執行任務,並且保證每個更新是一定完成的。
不知道具體的使用場景,不敢瞎BB
BB一下
取出一個大數組之後
1.如果是同一張表,並且有某種相同特徵某些數據可以使用where條件批量更新
2.如果不同的表,且邏輯也不一樣,那要考慮是否會超時了,如果無需用戶買單的請求,可以採用
fastcgi_finish_request
中斷用戶請求,再繼續執行代碼,或者採取定時任務的形式先確定總次數,然後 for 迴圈每次取 500 個更新就是了