Проверка идет ли запись в файл
1.
Михаил (23.11.2009 / 21:06)
Как проверить использует ли в данный момент какой-либо процесс файл для записи?
2.
Владимир (23.11.2009 / 21:18)
lsof | grep имяфайла
3.
Александр (23.11.2009 / 21:18)
попробуй так
$fp = fopen('/tmp/lock.txt','a');
if (flock($fp, LOCK_EX)) {
echo 'Файл не используется.';
flock($fp, LOCK_UN);
} else {
echo 'Файл занят.!';
}
fclose($fp);
4.
Михаил (23.11.2009 / 21:22)
#2, это для командной строки?
5.
Александр (23.11.2009 / 21:24)
4, да, под nix*
6.
Михаил (23.11.2009 / 21:33)
#3, проблема в том, что процесс не блокирует файл и flock($fp, LOCK_EX) всегда возвращает true
7.
Александр (23.11.2009 / 21:36)
6, какая ось?
8.
Михаил (23.11.2009 / 21:38)
windows7
9.
Александр (23.11.2009 / 21:51)
Страшный способ v2.0
<?php if(rename('tmp_file.txt', 'my_file.txt'))
{
echo 'Не используется!!';
rename('my_file.txt','tmp_file.txt');
}else{
echo 'Файл занят!!!';
}
Наверняка сработает
10.
Михаил (23.11.2009 / 22:06)
Не сработал. Я ж говорю файл не блокируется, любой другой процесс может делать с ним что угодно
11.
Александр (23.11.2009 / 22:11)
10, что за процесс если не секрет?
12.
Михаил (23.11.2009 / 22:20)
ffmpeg перекодирует видео из avi в 3gp
13.
Михаил (23.11.2009 / 22:36)
Чуть изменил скрипт, теперь rename работает. Но это какое-то извращение, ведь если кто-то будет качать файл, а в это время скрипт будет переименовывать его, то у пользователя, скачивающего файл загрузка может оборваться
14.
Александр (23.11.2009 / 22:41)
13, а с flock не пашет?
15.
Михаил (23.11.2009 / 22:50)
Не пашет. Нужно, наверное это всё в linux попробовать
URL:
https://visavi.net/topics/3202