2015-11-21 174 views
0

我在過去6個月中在此網上進行了搜索。我有php應用程序,它使用存儲在json文件中的json對象。有誰知道該文件的最大連接數是多少?該文件將在同一時刻多次更新,所以我擔心有可能出現問題。如果一個進程沒有完成或者類似的東西有什麼方法可以阻止更新過程? tnx通過php獲得的json文件的最大連接數

+0

也許有意思嗎? [忘記flock()和System V信號量 - 改用WebMutex](http://cubicspot.blogspot.co.uk/2010/10/forget-flock-and-system-v-semaphores.html)另外:[獲得獨佔性讀取/寫入文件鎖定原子更新](http://stackoverflow.com/questions/20829422/obtain-exclusive-read-write-lock-on-a-file-for-atomic-updates)。 –

回答

0

您可以在更新時鎖定文件並在嘗試更新之前檢查鎖定。

$fp = fopen("foo.txt", "w"); 
if (flock($fp, LOCK_EX)) { 
    fwrite($file,"Write something"); 
    sleep(10); 
    flock($fp, LOCK_UN); 
} 

如果要重試,你可以使用dotry, catch

$attempts = 5; 
$i = 0; 
do { 
    try 
    { 
     yourFunction(); 
    } catch (Exception $e) { 
     $i++; 
     sleep(1); 
     continue; 
    } 
    break; 
} while($i< $attempts); 

function yourFunction() { 
    $fp = fopen("foo.txt", "w"); 
    if (flock($fp, LOCK_EX)) { 
     fwrite($file,"Write something"); 
     sleep(10); 
     flock($fp, LOCK_UN); 
    } 
}