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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Скорость записи и копирования

Сообщения:  [1-10]   [11-14] 

 
 автор: Trianon   (14.03.2006 в 10:11)   письмо автору
 
   для: Shorr Kan   (13.03.2006 в 21:38)
 

Если запрос к файлу идет не через Ваш скрипт - практически невозможно. Можно лишь пытаться сокращать вероятность попадания запроса в этот интервал.
Если через Ваш - можно, но сложно, долго и муторно. Нужно будет как-то организовывать критическую секцию в ветках выполнения запросов. Насколько вероятна такая ситуация, и самое главное - насколько она кошмарна? Что будет, если запрос не обнаружит файла?

   
 
 автор: Shorr Kan   (13.03.2006 в 21:38)   письмо автору
 
   для: Trianon   (13.03.2006 в 18:02)
 

Я не защищался, поэтому и спрашиваю - можно ли это сделать?

[поправлено модератором]

   
 
 автор: Trianon   (13.03.2006 в 18:02)   письмо автору
 
   для: Shorr Kan   (13.03.2006 в 17:20)
 

А как Вы защищались от запроса к файлу в момент, когда выполняется copy() ?

   
 
 автор: Shorr Kan   (13.03.2006 в 17:20)   письмо автору
 
   для: Trianon   (13.03.2006 в 16:01)
 

Позволяет. Значит, наиболее быстрый вариант - создание временного файла, затем удаление настоящего и переименование? А нужно ли делать удаление - ведь достаточно переименовать временной в то же имя, что и настоящий...
И как защититься от запроса к несуществующему файлу? Ведь таковой запрос действительно может поступить между unlink и rename.

   
 
 автор: Trianon   (13.03.2006 в 16:01)   письмо автору
 
   для: Shorr Kan   (13.03.2006 в 15:30)
 

Какими?
Чтобы скопировать файл, нужно открыть один файл, создать второй. А затем в цикле пока данные в первом файле не кончатся, читать данные из первого файла, и распределяя по ходу дела дисковое пространство, записывать их во второй. Потом оба файла закрыть.
Чтобы переименовать файл, нужно... обновить запись в каталоге, заменив в ней имя.

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

   
 
 автор: Loki   (13.03.2006 в 15:59)   письмо автору
 
   для: Shorr Kan   (13.03.2006 в 15:30)
 

Операции переименования и удаления не работают непосредственно с даннами, только с таблицей FAT. Причем, операция удаления должна быть даже более быстрой чем переименования, так как в имени файла изменяется всего один символ:)

   
 
 автор: Shorr Kan   (13.03.2006 в 15:30)   письмо автору
 
   для: Trianon   (13.03.2006 в 10:08)
 

Не беру, ведь мне это неизвестно. Поделитесь подробностями, раз вы в курсе.

   
 
 автор: Trianon   (13.03.2006 в 10:08)   письмо автору
 
   для: Shorr Kan   (13.03.2006 в 09:55)
 

А то, что rename - операция атомарная, и выполняется мгновенно, А copy - это целая процедура, время работы которой, грубо говоря, пропорционально размеру файла, это Вы в расчет не берете?

   
 
 автор: Shorr Kan   (13.03.2006 в 09:55)   письмо автору
 
   для: Trianon   (12.03.2006 в 20:16)
 

Две операции, вместо одной.

   
 
 автор: Trianon   (12.03.2006 в 20:16)   письмо автору
 
   для: Shorr Kan   (12.03.2006 в 19:02)
 

unlink(); rename(); дольше copy() ?
Почему?

   

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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