08:44 

Проблема с отображением записи

Puhospinka
С капитаном Зараки время летит незаметно
Здесь проблема с отображением записи. Показывается кусочек (верхняя часть), избранное обрывается на этой записи.
И я не могу понять, это что-то с дайри или у нас с кодом проблемы.
Несколько часов назад все было нормально.

Скрины:

читать дальше

@темы: У меня ПЛАТНЫЙ дневник, Лента избранного, [+] Отвечено, Windows Vista

Комментарии
2011-11-16 в 11:12 

quirischa
администратор
(с капибарой на аватарке)
у вас слишком большая запись, она не влезла в 64 тысячи символов и обрезалась

2011-11-16 в 11:23 

Puhospinka
С капитаном Зараки время летит незаметно
quirischa
Это невозможно, там меньше 64 тыс. знаков (порядка 50).
Больше того, она нормально запостилась и висела какое-то время.

2011-11-16 в 11:35 

quirischa
администратор
(с капибарой на аватарке)
[L]Thyatira Batis[/L], там меньше 64 тыс. знаков

* * * * * * * * * * * * * * * * * *

Проблема в том, что текст записи получается больше положенных 64К символов.

Дело в том, что 64 тысячи знаков - это не просто ограничение на длину записи, это ограничение базы данных, то есть весь текст записи в его html-представлении не может быть больше чем 65520 символов.

Вот, например, хтмл-представление (фрагмент) вашей записи:

...ну и так далее.

А вот его текстовое представление:



У нас на сервере включено кеширование, в кеше хранятся записи созданные, обновленные и запрошенные в течение последних 24 часов. В кеше ограничения по длине записи нет, поэтому там всё показывается полностью. Но недолго.

Итак, схема работы сервера выглядит следующим образом:
1. вы пишете запись
2. нажимаете на кнопку "отправить"
3. текст записи преобразовывается в полное хтмл-представление, записывается в кеш (полностью), записывается в базу данных (а тут уже, возможно, и обрезанно)
4. в течение следующих 24 часов вы видите полный текст записи, который находится в кеше, но в базе уже записан "обрезанный" вариант
5. по истечении 24 часов копия записи из кеша удаляется, и при следующем просмотре записи в кеш попадает уже "обрезанный" вариант

С черновиками, подозреваю, происходит то же самое - 24 часа они хранятся "вроде как" целиком, а потом - бац! - и "внезапно" обрезаются.

Из всего сказанного получается, что хотя в форме записи число символов меньше 64К, но фактически длина записи уже превышена. Я скажу программисту, чтобы подсчитывалка длины считала длину уже "развернутой" записи, но не знаю, когда у него будет время заняться этим вопросом. Кроме того, такая новая подсчитывалка значительно замедлит работу сайта в целом: если сейчас длину записи можно подсчитать через джава-скрипт вообще на стороне браузера (то есть, без загрузки текста на сервер и его конвертации), то в новом варианте каждую запись придется загружать и разворачивать. Не знаю, даже, будет ли такой вариант реализован.

Кто виноват, выяснили. Теперь - что делать.

Самый "тупой" вариант, к сожалению, является и самым верным - писать записи меньше :( Или разбивать запись на несколько или выкладывать остаток записи в первом комментарии.

Теперь вопрос: как определить, в какое число символов в хтмл-представлении записи будут превращаться символы из поля ввода записи. Я так подумал, но кроме эмпирического варианта (проверка практикой) ничего не придумал. Схема, то есть, следующая:
1. Считаете, сколько символов в поле ввода новой записи
2. Отправляете запись
3. Открываете исходный код страницы со всеми развернутыми катами
4. Копируете оттуда хтмл-код и считаете, сколько там символов
5. Делите второе число на первое и получаете коэффициент увеличения

Число символов я считаю обычно через эту форму: www.8nog.com/counter/index.php

2011-11-16 в 11:50 

Puhospinka
С капитаном Зараки время летит незаметно
quirischa
Тогда у меня огромная просьба - укажите это где-нибудь. Укажите, что нельзя ориентироваться на то, что говорит дайри-статистика.
Потому что у нас пошло под хвост куча работы, не говоря уже о том, что мы поехавшим внезапно кодом напрягли кучу людей (сообщество читают полторы тысячи человек).
На форумах, где существует ограничение на ввод текста, это ограничение указывается очень просто: в знаках с пробелами (включая теги).
И, соответственно, это легко считается в Ворде - загружается запись, кнопка статистики рассказывает, сколько у нас всего знаков.
Тут я точно смотрела, потому что хотела слить две записи - эту и еще одну. У меня получилось порядка 68 тыс. знаков, дневник мне сказал, что многовато.
Соответственно, записи слить не получилось, и перед тем, как выложить, я проверила, сколько знаков в одной их них.
По статистике Ворд там отказалось 30 тыс. знаков.
Я посчитала, что во второй, соответственно, 38 тысяч.

Раньше ваше ограничение я вычислила методом тыка - нельзя было выкладывать больше 45 тыс. знаков с пробелами. Что мне делать сейчас?

2011-11-17 в 10:44 

Puhospinka
С капитаном Зараки время летит незаметно
quirischa, я все еще жду ответа.
дайри обрезают посты в произвольном порядке. Что с этим делать?

2011-11-17 в 10:47 

quirischa
администратор
(с капибарой на аватарке)
Thyatira Batis, исчерпывающий ответ приводится в моём предыдущем комментарии. В настоящее время мне больше нечего к нему добавить.

2011-11-17 в 11:20 

Puhospinka
С капитаном Зараки время летит незаметно
quirischa
Вы понимаете в чем проблема. У вас считалка выскакивает при превышении количества знаков с пробелами. То есть она считает текстовое представление. И мне, например, в голову не приходило, что нужно считать хтмл-код, это нелогично и ненормально в данном случае.

Кроме того, я не понимаю. У вас раньше была возможность отсекать превышение - запись, в которой симолов было больше, чем позволено, просто схлопывалась (текст исчезал). Неприятно, конечно, но все же лучше, чем обнаружить через сутки, что ты полутора тысячам человек порвал ленту.

Комментирование для вас недоступно.
Для того, чтобы получить возможность комментировать, авторизуйтесь:
 
РегистрацияЗабыли пароль?

Техподдержка

главная