Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка на открытие файла
 
 автор: dert   (09.11.2006 в 16:56)   письмо автору
 
 

Как проверить через php открыт или закрыт скажем текстовый файл?

   
 
 автор: dert   (09.11.2006 в 17:32)   письмо автору
 
   для: dert   (09.11.2006 в 16:56)
 

не кто не знает?

   
 
 автор: ddhvvn   (09.11.2006 в 19:13)   письмо автору
 
   для: dert   (09.11.2006 в 17:32)
 

А собственно зачем Вам это нужно?
Если с файлом работают через PHP, то он сам по себе закроется после закрытия скрипта.

Если я, конечно, не ошибаюсь. Но по-моему я прочитал это в одной из книг cheops-а :))

   
 
 автор: cheops   (09.11.2006 в 23:53)   письмо автору
 
   для: dert   (09.11.2006 в 16:56)
 

Собственно это одна из проблем совместного доступа к файлу нескольких потоков. Возможности проверить открыт файл или закрыт в данный момент нет. Если в файл одновременно пытается писать несколько потоков, то лучше прибегнуть к механизму блокировки.

   
 
 автор: dert   (10.11.2006 в 09:48)   письмо автору
 
   для: cheops   (09.11.2006 в 23:53)
 

Здравствуйте Cheops!
Почему я спросил этот вопрос
Дело в том что с помощью php скрипта любой человек может добавить что-то в файл, но вопрос в том что этот файл может быть открыт физически собствено непосредственно на сервере, и вот вопрос то в чем, что если файл открыт физически а не программой, то при попытке открыть этот файл программой на запись, должна быть проверка если файл не доступен для записи(кто то его уже открыл физически) то выполняется условиие об ошибки, которое я могу назначить сам, можно ли это сделать средствами PHP?

   
 
 автор: cheops   (10.11.2006 в 11:29)   письмо автору
 
   для: dert   (10.11.2006 в 09:48)
 

А под "физическим" открытием что имеется в виду - в редаторе?

   
 
 автор: dert   (10.11.2006 в 11:36)   письмо автору
 
   для: cheops   (10.11.2006 в 11:29)
 

Это файл Excel и он может быть открыт просто с компьютера в ручную собственно в саиои редакторе Excel, и если он будет открыт то скрипт не сможет сделать там изменения, и надо чтобы это проверилось что если файл открыт то выполняется альтернативное условие, скажем текст что нет доступа к файлу

   
 
 автор: Trianon   (10.11.2006 в 12:02)   письмо автору
 
   для: 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 прав - таких средств нет.
Кстати, программы редактирования разные бывают. Некоторые не будут держать файл открытым, пока человек работает с его содержимым. В этом случае вышеприведенный код не сработает, и Вы получите массу неожиданностей, от потери данных вплоть до разрушения логической структуры файла.

   
 
 автор: dert   (10.11.2006 в 12:47)   письмо автору
 
   для: Trianon   (10.11.2006 в 12:02)
 

Спасибо Trianon! Немного перемодифицировал и все раюотает

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования