Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: обработка и хранение текста

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: правильно выбрать тип хранения большого текста
broshurkaplus
Отправлено: 10 Декабря, 2012 - 21:44:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 354
Дата рег-ции: Янв. 2011  
Откуда: Пружаны Бресткая обл. Беларусь


Помог: 2 раз(а)




здравствуйте
столкнулся с вопросом:
есть тексты, больших размеров от 500кб до 2 и даже до 10М и много, их требуется хранить на сервере.
естественно ручно расписывать абзацы нереально.
так вот вопрос как лучше организовать изначально, чтоб потом не перекраивать?

1 хранить лучше в файле, а при выводе считывать по частям, разбивая на страницы.
тут при выводе надо разбивать на обзацы+css для красивого отображения. - время на считывание и обработку.

2 хранить в бд и при загрузке сразу обрабатывать, бить на абзацы, чтоб потом при выводе все выглядело аккуратно. тогда нагрузка на бд + её объём. выводить например по 50 абзацев на страницу. + опять же время, ведь по идее сначала разбиваю на фрагменты, а потом вывожу напр. с 51 по 100 .

подскажите как лучше поступить для уменьшения времени обработки, нагрузки и качественного отображения?
кто что может порекомендовать?

спасибо, ожидаю диалога

покапавшись думаю решить так:
хранить в бд, размеры практически в много много...Тб должно хватать
при загрузке заменять по переводу строки \n или \r\n на <br>
далее разбивать на части по <br> и оборачивать в абзац с нужным классом css для нужного отображения
выводить уже готовое из бд по абзацам напр. разбивая explode по </p> и с 0 по 49 с 50 по 99 и тд...

единственное что не очень понимаю - explode справится с большим размером текста и количеством абзацев, не будет ли торможения? + рассчитывать меню страниц напр. с делением по 50 абзацев?

спасибо, ожидаю диалога, оставлю вопрос до завтра, очень хочется перед началом работы услышать сторонние мнения.

(Отредактировано автором: 10 Декабря, 2012 - 22:14:10)

 
 Top
avtor.fox
Отправлено: 11 Декабря, 2012 - 05:02:26
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


Помог: 50 раз(а)




broshurkaplus ну как всегда. Что за тексты? Кто их вносить будет? Как их будут вносить?
Всю суть потеряли и начали с конца. Зачем разбивать по параграфам. Нипанятна.
 
 Top
DeepVarvar Супермодератор
Отправлено: 11 Декабря, 2012 - 07:58:48
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




В любом случае разбить единожды в самом начале, при добавлении файла, и больше не париться.
А чо вы там и как будете бить - для нас не важно, дело ваше.
 
 Top
broshurkaplus
Отправлено: 12 Декабря, 2012 - 16:55:22
Post Id



Посетитель


Покинул форум
Сообщений всего: 354
Дата рег-ции: Янв. 2011  
Откуда: Пружаны Бресткая обл. Беларусь


Помог: 2 раз(а)




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

спасибо, я так и сделал.
все работает достаточно быстро, я уже отправил в дело.

но теперь другая загвоздка вылезла:
сегодня пытался загрузить текст в 232к слов - и тут сбой скрипт мой все загружает, но не вставляет данные в поле бд. хотя в файле это 1000Кб, я за два раза загрузил (чтоб теги подабовлял скрипт), затем через пхп админ пытался обе части соединить - не пропускает. по идее в поле лонгтекст должно влазить = 2в32ст. знаков...
пишет:
#1153 - Got a packet bigger than 'max_allowed_packet' bytes
# 1153 - Полученный пакет больше, чем 'max_allowed_packet' байт
серв.
Версия сервера: 5.1.65-cll
Версия протокола: 10

я так полагаю что надо этот параметр, добавить макс. байт на сервере mysql править и перезапускать его?
в этом не силен.

может подскажите что сделать, если возможно самому?
в htaccess может чего прописпать может (у меня php_value post_max_size 20M)
или хостеру писать?

пожскажите кто сталкивался, как решить эту проблемку
спасибо

(Отредактировано автором: 12 Декабря, 2012 - 16:58:22)

 
 Top
esterio
Отправлено: 12 Декабря, 2012 - 17:10:01
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




broshurkaplus пишет:
#1153 - Got a packet bigger than 'max_allowed_packet' bytes

http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]t-too-large[dot]html
И еще одно предложение, я б сделал денормализацию. Тоесть поля б сделал BLOB и разместил в окремой табличке подалее от основной и по ID связывал)))
broshurkaplus пишет:
при загрузке заменять по переводу строки \n или \r\n на <br>

Тут кстати хорошо подойдет функция nl2br
 
 Top
broshurkaplus
Отправлено: 12 Декабря, 2012 - 17:21:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 354
Дата рег-ции: Янв. 2011  
Откуда: Пружаны Бресткая обл. Беларусь


Помог: 2 раз(а)




nl2br чего то не четко срабатывает, тестил с пол-дня. тексты из txt doc pdf и тд файлов, она бывает по два раза вставляет, а потоп по ним параграфы разбивает не четко где два, а то и три, потом в странице выглядит кривовато. просто срезаю переводы строк на бр, а затем по ним в абзацы, тогда один перевод=1абзац, ровно идет, ручно править - крест.

понимаю, что max_allowed_packet ...
но сам то могу ли я заправить это на хостинге, или это хостер (по идее) при сборке/перезапуске сервера изменяет?
 
 Top
esterio
Отправлено: 12 Декабря, 2012 - 17:34:01
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




broshurkaplus пишет:
понимаю, что max_allowed_packet ...
но сам то могу ли я заправить это на хостинге, или это хостер (по идее) при сборке/перезапуске сервера изменяет?

CODE (SQL):
скопировать код в буфер обмена
  1. SET GLOBAL max_allowed_packet=64*1024*1024;

Нарыл на одном форуме, но не уверен что права у вас есть и сработает ли вообще.
 
 Top
broshurkaplus
Отправлено: 12 Декабря, 2012 - 19:00:30
Post Id



Посетитель


Покинул форум
Сообщений всего: 354
Дата рег-ции: Янв. 2011  
Откуда: Пружаны Бресткая обл. Беларусь


Помог: 2 раз(а)




не стал пробовать и химичить.

я посчитал, что для примерно 1к страниц машинопись надо где-то max_allowed_packet 8М
+ не забывать что русс. при utf-8 это *2.

задал вопрос хостеру - он добавил мне, я вроде как норм. клиент, хотя по-видимому не всем подряд добавляет. да и сам я не могу сменить.

на этом пока что все.
всем спасибо.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB