Перейти к содержимому


Вложенные файлы


Сообщений в теме: 16

#1 nk

    Активный участник

  • Пользователи
  • PipPipPip
  • 228 сообщений
  • Пол:Мужчина

Отправлено 03 Март 2011 - 01:31

такой вопрос: если удалить файлs cb_data_files.*, всё упадёт или только пропадут вложенные файлы? Проблема в том, что на локальной версии база около 2 Гб, ОЗУ 2ГБ, создание бекапа вылетает с out of memory..... ну даже если до 3-х Гб апгрейд сделать, вряд ли поможет.........что посоветуете? тупо удалять файло из записей вручную? сейчас уже из всех таблиц только текстовые поля в записях (кроме файловых) само важное, просто поздно заметили такую ситуацию...

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 03 Март 2011 - 09:41

Просмотр сообщенияnk (3.3.2011, 1:31) писал:

если удалить файлs cb_data_files.*, всё упадёт или только пропадут вложенные файлы?
Только вложенные файлы. Но ссылки на них в таблицах останутся.

#3 nk

    Активный участник

  • Пользователи
  • PipPipPip
  • 228 сообщений
  • Пол:Мужчина

Отправлено 03 Март 2011 - 13:22

а если удалить эти файлы cb_data_files.* (версия 1.8.5), сделать "легкий бекап", потом обновиться до 1.9.2, загрузить бекап, конвертировать, а потом подсунуть cb_data_files.*, в базе вложенные файлы "появятся"? или не прокатывают такие фокусы? =)

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 03 Март 2011 - 13:34

Кстати, не совсем верно Вам ответил, прошу прощения. Файлы все таки удалять нельзя, т.к. полностью удалится таблица cb_data_files, что приведет к ошибкам. Если Вы хотите удалить вложенные файлы, Вам необходимо почистить эту таблицу, а не удалять.

#5 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 03 Март 2011 - 13:38

Просмотр сообщенияnk (3.3.2011, 13:22) писал:

а если удалить эти файлы cb_data_files.* (версия 1.8.5), сделать "легкий бекап", потом обновиться до 1.9.2, загрузить бекап, конвертировать, а потом подсунуть cb_data_files.*, в базе вложенные файлы "появятся"? или не прокатывают такие фокусы? =)
Если Вам необходимо только обновление, бэкап вообще делать не нужно, устанавливайте новую версию поверх старой и все.

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

#6 nk

    Активный участник

  • Пользователи
  • PipPipPip
  • 228 сообщений
  • Пол:Мужчина

Отправлено 03 Март 2011 - 13:55

т.е. бекапим папку webtables, всё сносим (грубо говоря) ну или ставим вообще на другой ПК последнюю версию с демо базой, а потом подсовываем нашу папку?

#7 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 03 Март 2011 - 14:29

Вообще, я предлагал просто установить новую версию поверх старой, без "сноса". Но в принципе такой вариант тоже возможен.

Только, как я уже сказал, делать все это надо при выключенной программе (значок Кб в трее быть не должен). Желательно вообще перезагрузить компьютер после выхода из программы для гарантированного снятия всех процессов. Иначе возможен не полный перенос/замена базы.

#8 nk

    Активный участник

  • Пользователи
  • PipPipPip
  • 228 сообщений
  • Пол:Мужчина

Отправлено 03 Март 2011 - 14:46

Продолжим здесь тему вложений? Файл cb_data_files весит 2 Гб, обращение к файлу из программы занимает секунд 20, + скачивание потом...

Можно ли, например, чтобы при нажатии "обзор" (при заливке файла в поле) и выборе файла, он на самом деле пихался "как есть" на какой-нибудь фтп (прописанный где-то в программе), а в базе оставалась ссылка туда? переделать тип "файл" самому нельзя, скорее всего... но можно добавить доп. действие, которое по кнопке заливает файл куда надо, а в заданное поле в текущей записи вставляет ссылку на него? только вот подскажите плз, как к кнопке прикрутить "Обзор..." для файла, и можно ли из "вычислений" напрямую работать с фтп (проверять существование файлов и каталогов и т.п.)....

я вообще в правильном направлении мыслю?

#9 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 03 Март 2011 - 15:15

http://clientbase.ru...?showtopic=2431

#10 nk

    Активный участник

  • Пользователи
  • PipPipPip
  • 228 сообщений
  • Пол:Мужчина

Отправлено 03 Март 2011 - 19:51

благодарю

#11 nk

    Активный участник

  • Пользователи
  • PipPipPip
  • 228 сообщений
  • Пол:Мужчина

Отправлено 04 Март 2011 - 01:05

возвращаюсь к data_files:

установил на другой комп демо-конфигурацию 1.9.2, подсунул папку webtables, поправил префикс в config.php и вроде как все гуд, файло на месте и живое, только при открытии первой таблицы в начале страницы строка

Parse error: syntax error, unexpected ')' in C:\Program Files\MSTL\ClientBase\www\fields.php(697) : eval()'d code on line 1

и соответственно повторяется столько раз, сколько записей выводится на страницу

для проверки даже поудалял из таблицы все поля с вычислениями - изменений никаких

?


конфигурация полностью своя

#12 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 04 Март 2011 - 10:05

Ошибка не в вычислениях, а в форматировании. Возможно вводили текстовые значения без кавычек - распостраненная ошибка.

#13 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 16 Март 2012 - 16:31

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

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#14 arsenal

    Активный участник

  • Пользователи
  • PipPipPip
  • 448 сообщений

Отправлено 19 Март 2012 - 11:32

аналогичная ситуация

#15 Analitic

    Активный участник

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 19 Март 2012 - 13:24

В базе в поле файл хранятся имена файлов, разделенных переносом строки.
Для получения имени файла на диске следует использовать get_file_path($field_id, $line_id, $fname), где переменные соответственно номер поля, номер строки и имя одного файла.
На соответствии этих трех параметров, строиться уникальное имя файла на диске.
Для того чтобы все файлы не хранились в одном каталоге, т.к. при большом количестве файлов в одном каталоге, ф.с. начинает притормаживать, сделана разбивка файлов на каталоги. Каталог первого уровня, - первые два символа имени хеша файла. Каталог второго уровня - 3ий и 4ый символы имени файла. В соответствии с именем файла он храниться в соответствующем каталоге. Но внутреннее устройство хранения не должно вас волновать, фактически вам нужна одна функция - get_file_path.

В простейшем случае, каталога, вам не нужно получать даже имя файла на диске, составляете каталог на основе данных таблиц, и делаете ссылки на open_file.php?field=...&line=...&file=
где параметры аналогичны выше перечисленным. В случае если не нужно отсылать файл, для сохранения, а открывать его прямо в окне браузера, например картинки, добавьте параметр &show=1

#16 Analitic

    Активный участник

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 19 Март 2012 - 13:26

Все файловые функции открыты, и хранятся в functions1.php
95% файловых операций можно реализовать с их помощью
save_data_file($field_id,$line_id,$fname,$data)
drop_data_file($field_id,$line_id,$fname)
drop_files_by_field($field_id)
и т.д.

#17 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 19 Март 2012 - 13:26

спасибо
то, что нужно

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения






Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных