2015-11-21 2 views
0

Я ищу в Интернете последние 6 месяцев. У меня есть php-приложение, которое использует объект json, хранящийся в json-файле. Кто-нибудь знает, какое максимальное количество подключений к этому файлу? Этот файл будет обновляться много раз в тот же момент, поэтому я боюсь, что что-то может пойти не так. Есть ли способ остановить процесс обновления, если один прогресс не выполняется или что-то подобное? tnx заранееМаксимальное подключение к файлу json по php

+0

может быть интересно? [Забудьте о flock() и System V Semaphores - вместо этого используйте 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); 
} 

Если вы хотите повторить, вы можете использовать do с try, 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); 
    } 
} 
Смежные вопросы