Почему php жрёт так много памяти (10 мб) в ещё совсем зелёной CMS (моей)?

maks_m
На сайте с 02.07.2013
Offline
84
1035

https://github.com/MaksimBoiko/CMS

На стиль кода не смотрите, только учусь, и в код админки не заглядывайте :)

Собственно, основной "функционал" несут три файла: index.php, single.php и bd.php. Интересует сценарий кода в первом if`е файла index.php. Если просматривать пустую страницу (т.е. без выборки из БД) используется 10 Мб памяти, а если из БД доставать какую-нибудь статью на 7к символов - используется 17 Мб памяти. Это значение уже приближается к WordPress, что настораживает, учитывая мелкий размер моего движка.

В CMS используется роутинг, но без ООП, в админке - роутинга нет, и такого пожирания памяти там не наблюдается.

Изначально все запросы к БД находились в отдельных файлах, и аппетиты php были ещё больше. Также интересно, почему две следующие строчки сжирают почти по 2 Мб:

$url = $_SERVER['REQUEST_URI'];

$url = explode('/', $url);

Использую CloudServer, 1 ядро, 2.3 ГГц, 2 Гб. Планируемая посещаемость - 10к (естественно, когда движок будет в нормальном состоянии). WordPress ложился в пиковые моменты и долго не вставал с такой посещаемостью на таком хостинге из-за нехватки ОЗУ (причина была, скорее, в таком участке кода, который редко используют, а если затронуть - падение). Поставил WP-super-cache и снёс ненужные плагины - теперь он кушает 20-25 Мб.

Ragnarok
На сайте с 25.06.2010
Offline
226
#1

maks_m, почитайте про sql-инъекции.. велосипедисты)

//TODO: перестать откладывать на потом
W
На сайте с 26.08.2010
Offline
42
#2

"В CMS используется роутинг, но без ООП, в админке - роутинга нет, и такого пожирания памяти там не наблюдается".

вообще такое сочетание слов настораживает в адекватности оценки используемых ресурсов.

Делайте кеширование если не уверены в серваке

Прокси сервис http(s), socks(4/5) с ежеминутным обновлением списков (http://worldofproxy.com/)
maks_m
На сайте с 02.07.2013
Offline
84
#3

Ragnarok, в админке, согласен, никакой защиты от sql-инъекций, но а как насчёт проверки по регулярке в index.php?

edogs software
На сайте с 15.12.2005
Offline
775
#4

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

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

mysql_fetch_array жрет память дублируя возвращаемый массив, по возможности лучше mysql_fetch-assoc.

Память потребляемую Вы меряете неверно, используйте memory_get_peak_usage. Заодно поймете, сколько на самом деле нужно вордпрессу.

А вообще количество косяков в коде (не в стиле, в коде) такое, что возникает ощущение, что Вы это писали по какой-то книжке. Книжку в сад, возьмите любой реально распространенный, но легкий движок и посмотрите как сделано.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий