Записване на информация в файл, ако той вече е отворен

DownFall

Registered
Въпроса ми е, как мога да разбера дали даден файл е отворен от друга програма?

Най-лесно мога да запиша информацията си с fopen/fputs, но ако в същото време от другаде се отвори същия файл, ще стане мазало. Как мога да се предпазя от такива недоразумения?

Мерси.
 
след fopen трябва да го заключиш за самостоятелно ползване с flock:

PHP:
$fp = fopen('file.txt','a+');
if (flock($fp, LOCK_EX)) {
    echo 'file locked succesfully';
else
    echo 'other process using this file!';

опит за заключване може да бъде затворен в while с проверка за изминало време за да изчакаш други процес да приключи например.
PHP:
$fp = fopen('file.txt','a+');
$start = time();
while ($lock = flock($fp, LOCK_EX) and time()-$time<5) 

if ($lock)
    echo 'file locked succesfully';
else
    echo 'other process using this file!';
 

Back
Горе