|
|
|
| Как проверить через php открыт или закрыт скажем текстовый файл? | |
|
|
|
|
|
|
|
для: dert
(09.11.2006 в 16:56)
| | не кто не знает? | |
|
|
|
|
|
|
|
для: dert
(09.11.2006 в 17:32)
| | А собственно зачем Вам это нужно?
Если с файлом работают через PHP, то он сам по себе закроется после закрытия скрипта.
Если я, конечно, не ошибаюсь. Но по-моему я прочитал это в одной из книг cheops-а :)) | |
|
|
|
|
|
|
|
для: dert
(09.11.2006 в 16:56)
| | Собственно это одна из проблем совместного доступа к файлу нескольких потоков. Возможности проверить открыт файл или закрыт в данный момент нет. Если в файл одновременно пытается писать несколько потоков, то лучше прибегнуть к механизму блокировки. | |
|
|
|
|
|
|
|
для: cheops
(09.11.2006 в 23:53)
| | Здравствуйте Cheops!
Почему я спросил этот вопрос
Дело в том что с помощью php скрипта любой человек может добавить что-то в файл, но вопрос в том что этот файл может быть открыт физически собствено непосредственно на сервере, и вот вопрос то в чем, что если файл открыт физически а не программой, то при попытке открыть этот файл программой на запись, должна быть проверка если файл не доступен для записи(кто то его уже открыл физически) то выполняется условиие об ошибки, которое я могу назначить сам, можно ли это сделать средствами PHP? | |
|
|
|
|
|
|
|
для: dert
(10.11.2006 в 09:48)
| | А под "физическим" открытием что имеется в виду - в редаторе? | |
|
|
|
|
|
|
|
для: cheops
(10.11.2006 в 11:29)
| | Это файл Excel и он может быть открыт просто с компьютера в ручную собственно в саиои редакторе Excel, и если он будет открыт то скрипт не сможет сделать там изменения, и надо чтобы это проверилось что если файл открыт то выполняется альтернативное условие, скажем текст что нет доступа к файлу | |
|
|
|
|
|
|
|
для: dert
(10.11.2006 в 11:36)
| | можете попробовать следующее.
<?php
$f = @fopen('list.csv', 'rb');
if(!$f)
echo ("Нет такого файла");
else
{
fclose($f);
$f = @fopen('list.csv', 'rb+');
if(!$f)
die("Нет доступа к файлу");
else
{
echo 'работаем с файлом'; // здесь работаем с открытым файлом
fclose($f);
}
}
?>
|
Проверить, работает ли кто-нибудь с файлом, не пытаясь его открыть - не получится. Тут cheops прав - таких средств нет.
Кстати, программы редактирования разные бывают. Некоторые не будут держать файл открытым, пока человек работает с его содержимым. В этом случае вышеприведенный код не сработает, и Вы получите массу неожиданностей, от потери данных вплоть до разрушения логической структуры файла. | |
|
|
|
|
|
|
|
для: Trianon
(10.11.2006 в 12:02)
| | Спасибо Trianon! Немного перемодифицировал и все раюотает | |
|
|
|