Баг в LS 1.0 при выполнении "cut"
Здравствуйте, коллеги!
Кто нибудь сталкивался с там, что «cut» не срабатывает?
В силу специфики мне приходится публиковать большие тексты, размер топика пришлось увеличить с 15 000 символов до 150 000. При публикации топика такого размера «cut» не обрезает текст и на главную топик вываливается в полном объеме. На версии движка 0.51 такого вроде не наблюдалось.
Кто нибудь сталкивался с там, что «cut» не срабатывает?
В силу специфики мне приходится публиковать большие тексты, размер топика пришлось увеличить с 15 000 символов до 150 000. При публикации топика такого размера «cut» не обрезает текст и на главную топик вываливается в полном объеме. На версии движка 0.51 такого вроде не наблюдалось.
29 комментариев
возможно у вас памяти не хватает для запуска машины регулярных выражений.
Посмотрел лог ошибок, там только записи такого типа:
[Sat Aug 04 12:58:37 2012] [error] [client ****.***.***.***] PHP Notice: Undefined index: img_file in /var/www/********/data/www/********.com/classes/actions/ActionAjax.class.php on line 1058, referer: http://********.com/topic/add
Посмотрите на главной, где обрезает кат…
В текстовый файл скопировал большой текст. (что бы убрать все форматирование и пр.) Потом скопировал это текст в Word. Выделил кусок размером 149 000 символов с пробелами и стал размещать в топик. При попытке опубликовать, вылетало сообщение, что размер текста превышает 150 000 символов. Постепенно удаляя куски текста, смог опубликовать текст. При этом, скопировав кусок опубликованного текста в Word обнаружил, что размер текста составляет 143 000 символов с пробелами. При этом тег cut не ставился, однако текст на главной был обрезан, и на главную до «читать далее» было выведено около 35 000 символов.
Попытки поставить тег cut ни к чему не привели — текст по прежнему обрезался по 35 000 символов. Тогда я стал удалять куски текста, что бы сократить его и узнать, при каком количестве символов сработает cut. Cut перестал срабатывать при размере текста более 53 000 символов.
Теперь два вопроса — почему и что делать..?
Честно говоря, совсем недавно пересекся с LS, да и опыта мало. Поэтому моё решение совсем не идеально, а то и вовсе… Короче, в /engine/modules/text/Text.class.php нашел функцию Cut($sText) и чуток её подправил. А именно, разделил входной параметр функцией str_split(), и дальше работал с первым его фрагментом.
Решил проблему 1 строчкой
index.php (где-то в начало)
ini_set('pcre.backtrack_limit', '1000000'); //Поставьте ваше значение, скажем для автора 150к