1. 程式人生 > >PHP的flock函式 阻塞與非阻塞

PHP的flock函式 阻塞與非阻塞

PHP flock()函式

定義和用法
flock()函式鎖定或釋放檔案。若成功返回true,若失敗返回false。

語法

flock(file, lock, block)
引數 描述
file 必需。規定要鎖定或釋放的已開啟的檔案
lock 必需。規定要使用哪種鎖定型別
block 可選。若設定為1或true,則當進行鎖定時阻擋其他程序

說明
flock()操作的file必須時一個已經開啟的檔案指標
lock引數可以是以下值之一:

  • 要取得共享鎖定(讀取程式),將lock設為LOCK_SH
  • 要取得獨佔鎖定(寫入程式),將lock設為LOCK_EX
  • 要釋放鎖定(無論共享還是獨佔),將lock設為LOCK_UN
  • 如果不希望flock()在鎖定時堵塞,則給lock加上LOCK_NB(預設獨佔鎖定是堵塞的)

由於flock需要一個檔案指標,因此可能不得不用一個特殊的鎖定檔案來保護打算通過寫模式開啟的檔案的訪問(在fopen()函式中加入”w” 或 “w+”)。

例子

<?php 
$file = fopen("test.txt", "w+");

if (flock($file, LOCK_EX)) {
    fwrite($file, "hahahah");
    flock($file, LOCK_UN);
} else
{ echo "locking file!" } fclose($file); ?>

相關推薦

PHP的flock函式 阻塞阻塞

PHP flock()函式 定義和用法 flock()函式鎖定或釋放檔案。若成功返回true,若失敗返回false。 語法 flock(file, lock, block) 引數

Socket編程中,阻塞阻塞的區別

軟件 復用 優點 調用 服務器 運用 需要 默認 con   阻塞:一般的I/O操作可以在新建的流中運用.在服務器回應前它等待客戶端發送一個空白的行.當會話結束時,服務器關閉流和客戶端socket.如果在隊列中沒有請示將會出現什麽情況呢?那個方法將會等待一個的到來.這個行為

同步異步、阻塞阻塞

阻塞與非阻塞 就會 結束 檢查 通信機制 得到 node 分布 好書 “阻塞”與"非阻塞"與"同步"與“異步"不能簡單的從字面理解,提供一個從分布式系統角度的回答。1.同步與異步同步和異步關註的是消息通信機制 (synchronous communication/ a

阻塞阻塞,同步異步

通過 部件 一個 socket 沒有 事件觸發 sel syn 就會 在進行網絡編程時,我們常常見到同步(Sync)/異步(Async),阻塞(Block)/非阻塞(Unblock)四種調用方式:同步: 所謂同步,就是在發出一個功能調用時,在沒有得到結果之前,

同步異步,阻塞阻塞

消息 阻塞 結果 阻塞與非阻塞 過程調用 函數 異步 非阻塞 完成 異步的概念和同步相對。當一個同步調用發出後,調用者要一直等待返回消息(結果)通知後,才能進行後續的執行;當一個異步過程調用發出後,調用者不能立刻得到返回消息(結果)。實際處理這個調用的部件在完成後,通過狀態

關於veriolg中阻塞阻塞賦值問題

觸發 改變 希望 到來 決定 工作 執行 為什麽 個人 在一開始學到阻塞和非阻塞的時候,所被告知的兩者的區別就在於阻塞是串行的,非阻塞是並行的。但是雖然知道這個不同點,有些時候還是很難真正區分用兩者電路的區別,在這就通過幾個例子來解釋一下。 以一個簡單的串行流水線寄存器為例

轉:聊聊同步、異步、阻塞阻塞

AI strong 什麽 商業 同步與異步 好的 等待 不難 兩個 轉載:https://www.jianshu.com/p/aed6067eeac9 近來遇到了一些常見的概念,尤其是網絡編程方面的概念,如:阻塞、非阻塞、異步I/O等等,對於這些概念自己也沒有太清晰的認

關於flock文件鎖的阻塞阻塞

open bsp 等待 fopen pan ech 直接 else 阻塞與非阻塞 阻塞模式,程序會一直等待。 <?php $fp = fopen("lock.txt", "r"); if(flock($fp,LOCK_EX)) { //code flock($fp,

Java 同步異步-阻塞阻塞理解

blog markdown logs 任務 一段 mar 慢操作 兩個 需要 Java 同步與異步-阻塞與非阻塞理解 Java 中同步與異步,阻塞與非阻塞都是用來形容交互方式,區別在於它們描述的是交互的兩個不同層面。 同步與異步 同步與異步更關註交互雙方是否可以同時工作。以

socket阻塞阻塞 同步非同步 I/O模型

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

socket阻塞阻塞,同步非同步、I/O模型(轉載只為查閱方便,若有侵權,立刪)

socket阻塞與非阻塞,同步與非同步 作者:huangguisu     1. 概念理解        在進行網路程式設計時,我們常常見到同步(Sync)/非同步(Async),阻塞(Block)/非阻塞(Unbl

redux-saga generator巢狀執行的阻塞阻塞

1.generator呼叫generator 在one中yield另一個generatoranother function*another(params){ // ... } function*one(params,{ call, put }){ // ...

圖解阻塞阻塞&同步非同步

一、阻塞I/O模型 二、非阻塞I/O模型 三、非同步I/O模型 四、同步I/O模型                    

Linux下阻塞阻塞,同步非同步的關係及IO模型

一、阻塞與非阻塞,同步與非同步的關係 1、同步   同步,就是在發出一個功能呼叫時,在沒有得到結果之前,該呼叫就不返回。也就是說事情必須一件一件地做,等前一件做完了才能做下一件事。 2、非同步   非同步,就是在發出一個功能呼叫時,呼叫者不會立刻得到結果。實際處理這個呼叫的部

java nio及作業系統底層原理同步非同步阻塞阻塞

目錄 IO基本概念 同步,非同步,阻塞,非阻塞 同步與非同步 阻塞與非阻塞 IO模型(Reference Link) 阻塞I/O模型 非阻塞I/O模型 I/O複用模型 訊號驅動非同步I/O模型 非同步I/O模型 總結 AIO,BIO,NIO Jav

阻塞阻塞,同步非同步

Java的IO有三種:IO、NIO、AIO 第一種是Java剛開始就出現的IO即BIO(同步阻塞IO),我們一般常說的IO就是這種IO,這種IO相對來說比較簡單,基於流模型,提供一種IO操作。互動方式是同步、阻塞,呼叫的順序是線性順序,這種IO有一個好處就是,程式碼簡單,但是缺點就是IO的效率較

Linux read 阻塞阻塞讀取

read函式非阻塞讀取會立即返回。 阻塞讀取通過設定也可在沒有資料時立即返回 #include <termios.h> struct termios tio; tio.c_cc[VTIME] = 0; // timeout in deciseconds for noncanonical rea

同步非同步,阻塞阻塞

老張愛喝茶,廢話不說,煮開水。 出場人物:老張,水壺兩把(普通水壺,簡稱水壺;會響的水壺,簡稱響水壺)。 1 老張把水壺放到火上,立等水開。(同步阻塞) 老張覺得自己有點傻 2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。(同步非阻塞) 老張還是覺得自己有點傻,於是變高端了,

Java NIO(三)阻塞阻塞

   阻塞與非阻塞 阻塞   傳統的 IO 流都是阻塞式的。也就是說,當一個執行緒呼叫 read() 或 write()時,該執行緒被阻塞,直到有一些資料被讀取或寫入,該執行緒在此期間不能執行其他任務。因此,在完成網路通訊進行 IO 操

NIO阻塞阻塞

NIO的非阻塞模式 NIO完成核心的東西是一個選擇器,Selector,選擇器主要是將每一個傳輸資料的通道註冊到選擇器上,選擇器作用是監控這些IO的狀態(讀,寫,連線狀態),然後用選擇器監控通道的狀況,等待所有的執行緒準備就緒時,選擇器將任務分配到服務端一個或者多個執行緒上再去執行