PHP 之文件鎖解決併發問題

 1、參數說明spa

  $handle: 文件資源code

  $operation: 鎖的類型blog

    LOCK_SH: 共享鎖進程

    LOCK_EX: 排他鎖資源

    LOCK_UN: 釋放鎖io

  $wouldblock: 設置爲true的時候,鎖定文件時,會阻止其餘進程class

2、具體實現代碼file

/**
 *  阻塞模式
 */
$file = fopen("lock.txt", "r");
//進行排它型鎖定,阻塞:後面的進程會一直等待前面的進程執行完畢
if (flock($file, LOCK_EX)) {//加鎖
    //TODO 業務代碼...

    //釋放鎖
    flock($file, LOCK_UN);
}
fclose($file);
/**
 *  非阻塞模式
 */
$file = fopen("lock.txt", "r");
//進行排它型鎖定,非阻塞:只要當前文件有鎖存在,那麼直接返回
if (flock($file, LOCK_EX | LOCK_NB)) {//加鎖
    //TODO 業務代碼...

    //釋放鎖
    flock($file, LOCK_UN);
} else {
    die("系統繁忙,稍後重試");
}
fclose($file);
相關文章
相關標籤/搜索