Въпроса ми е, как мога да разбера дали даден файл е отворен от друга програма?
Най-лесно мога да запиша информацията си с 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!';