2015-11-21 132 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); 
    } 
}