簡體   English   中英

每位使用者的php限制檢視

[英]php limit view per one user

首先,我必須說這是我的第二個問題(第一個被關閉,因為我沒有很好地解釋我的問題)

我正在建立應由50-60名員工使用的數據庫。 在我們的基地中,我們有許多客戶(1行= 1個客戶)。 想法是當雇員打開頁面時,它應該顯示一個客戶,但是如果另一個雇員打開同一頁面,則應該顯示另一個客戶(我想避免如果2個雇員同時按下刷新按鈕的情況,該頁面將不顯示同一客戶。

我有這個php代碼,用於獲取基本數據,但是如果我在同一時間推送刷新,它將在2 PC上給我相同的結果。 我如何避免這種情況

在表telesales_anc中,我有“ Lock_ID”列,當頁面打開時,php用“ 1”更新它

是否有任何功能“保持”該行的連接或類似功能? 我嘗試用谷歌搜索它,但我只找到一些帶有計時器的解決方案(但我認為這是個壞主意,仍然可以同時打開2個Emlpoyes)

$MSISDN = "SELECT MSISDN FROM telesales_anc WHERE Lock_ID != 1 LIMIT 1";
$result = $mysqli->query($MSISDN);

while ( $row = $result->fetch_assoc() ) {
$IDcheck = "SELECT ID FROM telesales_anc WHERE '{$row['MSISDN']}' = MSISDN";
$result_IDcheck = $mysqli->query($IDcheck);

while ( $row = $result_IDcheck->fetch_assoc()) {
$lock_ID = "UPDATE telesales_anc SET Lock_ID = 1 where '{$row['ID']}' = ID";
$result_ID = $mysqli->query($lock_ID);

}}

我在很短的時間內添加了usleep()來等待其他用戶鎖定,並在第二個sql AND Lock_ID!=1處進行了少量更改,因此如果其他用戶鎖定了它,則您將無法獲取此代碼,請注意,您需要一些循環重試以獲取解鎖的

$MSISDN = "SELECT MSISDN FROM telesales_anc WHERE Lock_ID != 1 LIMIT 1";
$result = $mysqli->query($MSISDN);

usleep(rand(100000,300000)); // we are sleeping randomly between 0.1 - 0.3 seconds for waiting the other users lock
while ( $row = $result->fetch_assoc() ) {
    $IDcheck = "SELECT ID FROM telesales_anc WHERE '{$row['MSISDN']}' = MSISDN AND Lock_ID != 1";
    $result_IDcheck = $mysqli->query($IDcheck);

    while ( $row = $result_IDcheck->fetch_assoc()) {
        $lock_ID = "UPDATE telesales_anc SET Lock_ID = 1 where '{$row['ID']}' = ID";
        $result_ID = $mysqli->query($lock_ID);

}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM