2014-04-14 47 views
0

在我的php腳本中,解析一個字符串之後,我需要將一些數據寫入一個文件(創建之後如果不存在)。在寫入文件之前,我需要獨佔鎖定以避免問題。 這是我的代碼:php:獨佔鎖定文件從未獲得

foreach ($elements[0] as $current) { 
    $file_handler = fopen($my_folder . "/" . $current . ".txt", "a"); 
    $locked = flock($file_handler, "LOCK_EX"); 
    while (!$locked) { 
     usleep(500000); 
     $locked = flock($file_handler, "LOCK_EX"); 
    } 
    //got lock 
    fwrite($file_handler, $mystring . "\n"); 
    //release lock 
    flock($file_handler, LOCK_UN); 
    fclose($file_handler); 
} 
return; 

現在,有些事情似乎不起作用。 fopen創建文件,但我的代碼似乎進入循環內(while文件被創建,但沒有寫入裏面)。怎麼了?

+0

我建議使用數據庫來避免此問題。 – dlyaza

+0

我不能使用數據庫,因爲我需要存儲數據庫無法存儲的大量數據(數據庫可能會在我的情況下確定少量的數據) 編輯:當我打電話給腳本,我是唯一的誰要求鎖定文件 – giozh

回答

2

您將鎖定的參數作爲字符串而不是常量傳遞。

嘗試:

$locked = flock($file_handler, LOCK_EX); 

通知失蹤雙引號LOCK_EX

+0

是的,這是,謝謝 – giozh