file_put_contents遇見檔案排他鎖是是否會佇列等待

WBOY
發布: 2016-10-17 09:30:16
原創
2216 人瀏覽過

file_put_contents('test.txt',$data,FILE_APPEND|LOCK_EX);
如上語句,假如正在進行大數據量的檔案寫入操作,會佔用較長時間,後續的file_put_contents也要寫入數據,由於檔案具有排他鎖,後續的file_put_contents是否會成為佇列進行等待上一個檔案寫入操作執行完畢

回覆內容:

file_put_contents('test.txt',$data,FILE_APPEND|LOCK_EX);
如上語句,假如正在進行大數據量的檔案寫入操作,會佔用較長時間,後續的file_put_contents也要寫入數據,由於檔案具有排他鎖,後續的file_put_contents是否會成為佇列進行等待上一個檔案寫入操作執行完畢

是,file_put_contents的實現其實就是fopen,fwrite,fflush,fclose的這套操作的簡單實現。如果加上LOCK_EX,fopen之後還會執行一個flock,之後這段程式碼會一直阻塞到獲放檔案鎖後才會繼續執行。這個等待是以隊列方式進行排序的.

另外過大的檔案寫入,可能會超過PHP的最大執行事件,有遺失資料的風險,如果資料對你比較重要建議自行實現大資料量的寫入佇列

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!