PHP允許我們使用x
標誌做fopen時:PHP fopen(x標誌)保證只運行一次?
創建並以寫入方式打開;將文件指針放在文件的起始位置 處。
如果該文件已經存在,則fopen()調用 將返回FALSE和產生水平 E_WARNING的錯誤失敗。
如果文件不存在,請嘗試創建它。這是 等價於爲底層 開放(2)系統調用指定O_EXCL | O_CREAT標誌。
這是否意味着我們無論有多少個併發請求的fopen(來自不同的用戶),可以保證該文件將只創建一次,從來沒有被覆蓋?
if ($handle = fopen("part006", "x+b")) {
do_some_processing();
echo "You managed to process.";
/*
can we guarantee that only 1 user (http request)
will ever process the function and see the
message "you managed to process" ?
*/
} else {
echo "You failed to process.";
}
是否保證Windows獨佔性? – Pacerier 2013-03-09 04:05:18
我不確定(但很有可能)..會試圖找到這些信息..(不幸的是'人'不能在Windows上工作)) – hek2mgl 2013-03-09 04:06:21
@Pacerier閱讀一些郵件列表,看起來這不起作用在窗戶上。但我不確定,因爲我目前沒有測試窗口。你可以測試嗎?如果它不起作用,那麼你應該使用'flock()'來達到這個目的。這是不一樣的,但它可能會幫助你(不知道你的應用程序的需求)。注意我對這[問題]的答案(http://stackoverflow.com/questions/15305296/how-to-use-flock- in-php/15305346#15305346)這是'flock()'相關,並可能有所幫助 – hek2mgl 2013-03-09 04:14:12