Astra.CMS

 

 

Форум » Проблемы

Размер поля в Каталоге материалов

Стоит ли открыть форум? Напишите об этом по адресу admin@astracms.ru написав в теме "открыть форум". Я не автор движка и поэтому не могу консультировать так, как это делал бы он, но возможно у нас получится совместно находить решения.

Автор Текст сообщения

Zeves
Сообщений: 13

Какое ограничение на размер основного текстового поля в Каталоге материалов? Я размещаю статью большого объема и у меня система просто падает в ошибку "Explanation: The request timed out before the page could be retrieved. " и статья не сохраняется. Если я напрямую в базе данных увеличу размер поля (пока еще не заглядывал даже туда), то не отразится ли это потом на последующих автообновлениях (к примеру обратно уменьшится размер и я потеряю концовки больших статей)? Имеет ли смысл это делать?
 
aristoc

admin
Сообщений: 1159

Тип поля для текста в базе longtext, это огромный размер, больше просто нет. Т.е. проблема скорее всего не в этом.
 

Zeves
Сообщений: 13

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

admin
Сообщений: 1159

Попробуйте в настройках php увеличить размер post запроса.
post_max_size
 

Zeves
Сообщений: 13

post_max_size 20M
а у меня статья размером всего-то 170К - то есть не настолько большая, чтоб все сразу падало
 
aristoc

admin
Сообщений: 1159

Ну в любом случае проблема явно на уровне сервера или интернет канала. Может попробуйте использовать другой браузер.
 

Zeves
Сообщений: 13

Попробовал другой браузер - ошибка сохраняется. При увеличении размера текста до примерно 73940 байт сохранение переходит в ошибку. Попробовал с разными текстами (вдруг какой-то спец символ мешает). Сервер возвращает состояние:
    HTTP/1.1 500 ( The specified network name is no longer available.  wink
 

Zeves
Сообщений: 13

Экспериментальным путем выяснил, что баг дает функция в строке
$_REQUEST['keywords']=getkeywords($_REQUEST['content']);
Пока что данную строку закомментил. В результате сохранение стало проходить.
Но стало виснуть в точке исполнения строки
A::$OBSERVER->Event('searchIndexUpdate',SECTION,array('id'=>$row['id'],'name'=>$name,'content'=>$_REQUEST['content'],'tags'=>$_REQUEST['tags']));

Закомментил и ее, и все стало сохраняться без проблем. Так как я не имею возможности проверить тонкие места данных функций не имея исходного кода (не знаю стандартные это функции или функции системы), а удаление этих строк приводит к частичной потери функционала, то прошу рекомендаций как сохранить функционал и избежать зависаний системы.
 
aristoc

admin
Сообщений: 1159

Видмо тогда просто памяти не хватает обработать текст для индексации в поисковую базу.
Попробуйте увеличить memory_limit
 

Zeves
Сообщений: 13

Увеличил с 32М до 128М. Не помогло. 256М тоже. Еще больше увеличивать не стал.
 
aristoc

admin
Сообщений: 1159

Ну тогда не знаю что посоветовать.
Для сильно больших текстов тогда индексацию лучше не запускать. Может хостинг рубит процесс на пиковой нагрузке при его обработке.
Либо оставьте эти строки заккоментированными, либо добавьте условие на размер текста, например:
if(mb_strlen($_REQUEST['content'])<размер)
$_REQUEST['keywords']=getkeywords($_REQUEST['content']);
...
 

Zeves
Сообщений: 13

Спасибо, так и сделал. В принципе больших статей не должно быть много, так что такое решение вполне приемлемо.
 

Вы не можете добавить сообщение. Вам необходимо авторизироваться на сайте под своим логином либо зарегистрироваться.