1. 程式人生 > >php 上鎖 概述

php 上鎖 概述

鎖定 什麽 執行 業務 為什麽 允許 解決 客服端 同一時間

1,為什麽要上鎖?

當某個功能訪問量小的時候,可以直接加log,然後根據記錄判斷是否操作過。但是有次我在操作數據批量處理的時候——計劃任務
在自動執行那個腳本,客服在手動執行那個腳本,結果create_time的秒數都一樣了,這個時候查詢結果再if語句是無法限制的,需要用
鎖。
當多個腳本同一時間並發訪問服務器端時,訪問腳本會出現不正確的情況,這個問題需要上鎖(鎖機制)來解決。
2,mysql上鎖
(1),READ讀鎖,鎖定過程中所有客戶只讀這張表。
(2),WRITE寫鎖,只有鎖定的表客服端可以操作,其他的只能到這個鎖釋釋放。
加鎖:LOCK TABLE 表1 READ|WRITE,表2 READ|WRITE...
解鎖: UNLOCK TABLES (TABLES解鎖多個表)
3,文件鎖代碼如下:
//建一個文件
$f = fopen(‘/tmp/‘ . $task[‘id‘] . ".txt", "w+");
//上鎖
flock($f, LOCK_EX);
//這裏是業務代碼
中間的代碼一次只能一個人訪問,原理是建一個文件只允許一個人進出
//釋放鎖
flock($f, LOCK_EX);
fclose($f);
//刪除文件
// unlink(‘/tmp/‘.$task[‘id‘].".txt");

php 上鎖 概述