Размер поля в Каталоге материалов
Стоит ли открыть форум? Напишите об этом по адресу admin@astracms.ru написав в теме "открыть форум". Я не автор движка и поэтому не могу консультировать так, как это делал бы он, но возможно у нас получится совместно находить решения.
Автор | Текст сообщения |
---|---|
Zeves |
26.06.2012 14:03
Какое ограничение на размер основного текстового поля в Каталоге материалов? Я размещаю статью большого объема и у меня система просто падает в ошибку "Explanation: The request timed out before the page could be retrieved. " и статья не сохраняется. Если я напрямую в базе данных увеличу размер поля (пока еще не заглядывал даже туда), то не отразится ли это потом на последующих автообновлениях (к примеру обратно уменьшится размер и я потеряю концовки больших статей)? Имеет ли смысл это делать?
|
admin |
26.06.2012 15:30
Тип поля для текста в базе longtext, это огромный размер, больше просто нет. Т.е. проблема скорее всего не в этом.
|
Zeves |
26.06.2012 16:57
Интересно, а как тогда можно определить в чем причина? Небольшие по размеру статьи проходят, а большая - нет. Причем в серверный лог ошибок ничего не пишется. У системы есть какая-то система лога ошибок?
|
admin |
26.06.2012 17:03
Попробуйте в настройках php увеличить размер post запроса.
post_max_size |
Zeves |
26.06.2012 17:23
post_max_size 20M
а у меня статья размером всего-то 170К - то есть не настолько большая, чтоб все сразу падало |
admin |
26.06.2012 17:29
Ну в любом случае проблема явно на уровне сервера или интернет канала. Может попробуйте использовать другой браузер.
|
Zeves |
26.06.2012 19:23
Попробовал другой браузер - ошибка сохраняется. При увеличении размера текста до примерно 73940 байт сохранение переходит в ошибку. Попробовал с разными текстами (вдруг какой-то спец символ мешает). Сервер возвращает состояние:
HTTP/1.1 500 ( The specified network name is no longer available.   |
Zeves |
27.06.2012 18:27
Отредактировано: 27.06.2012 18:32
Экспериментальным путем выяснил, что баг дает функция в строке
$_REQUEST['keywords']=getkeywords($_REQUEST['content']); Пока что данную строку закомментил. В результате сохранение стало проходить. Но стало виснуть в точке исполнения строки A::$OBSERVER->Event('searchIndexUpdate',SECTION,array('id'=>$row['id'],'name'=>$name,'content'=>$_REQUEST['content'],'tags'=>$_REQUEST['tags'])); Закомментил и ее, и все стало сохраняться без проблем. Так как я не имею возможности проверить тонкие места данных функций не имея исходного кода (не знаю стандартные это функции или функции системы), а удаление этих строк приводит к частичной потери функционала, то прошу рекомендаций как сохранить функционал и избежать зависаний системы. |
admin |
27.06.2012 19:20
Видмо тогда просто памяти не хватает обработать текст для индексации в поисковую базу.
Попробуйте увеличить memory_limit |
Zeves |
27.06.2012 20:22
Отредактировано: 27.06.2012 20:26
Увеличил с 32М до 128М. Не помогло. 256М тоже. Еще больше увеличивать не стал.
|
admin |
27.06.2012 20:53
Ну тогда не знаю что посоветовать.
Для сильно больших текстов тогда индексацию лучше не запускать. Может хостинг рубит процесс на пиковой нагрузке при его обработке. Либо оставьте эти строки заккоментированными, либо добавьте условие на размер текста, например: if(mb_strlen($_REQUEST['content'])<размер) $_REQUEST['keywords']=getkeywords($_REQUEST['content']); ... |
Zeves |
27.06.2012 21:32
Спасибо, так и сделал. В принципе больших статей не должно быть много, так что такое решение вполне приемлемо.
|
Вы не можете добавить сообщение. Вам необходимо авторизироваться на сайте под своим логином либо зарегистрироваться.