我的應用程序內有一點問題。 我有很多進程自動啓動,從服務器用crontab,用php寫成文件夾內的文件讀取。多個進程讀取相同的文件php
有時不同的進程讀取相同的文件和應用程序中創建一個問題。 有沒有辦法解決這個問題? 實際上,我讀取文件夾中的所有文件,讀取它們並立即刪除,但有時另一個進程在刪除它之前讀取相同的文件。
這是我的腳本cakephp3(所以有些類,如文件只是爲cakephp3,但不是問題的問題)寫入讀取和刪除:
$xml_files = glob(TMP . 'xml/*.xml');
foreach($xml_files as $fileXml)
{
//read the file and put into a string or array or object
$explStr = explode('/', $fileXml);
$filename = $explStr[count($explStr) - 1];
$path = TMP . '/xml/' . $filename;
$file = new File($path, false);
if($file->exists()){
$string = $file->read();
$file->close();
$file->delete();
}
}
有趣的是,在[CakePHP的文件API](http://book.cakephp.org/3.0/en/core-libraries/file-folder.html#file-api)表明鎖定是由框架處理。 exists()條件在這裏似乎沒有用,你試過用if($ string = $ file-> read())來代替它嗎? –
我已經試過了,但是沒有辦法解決這個問題@ code-kobold –