Розчарування у Yii, Tarlyun blog
Розчарування у Yii
Я зазвичай не любитель писати мініпости чи ділитися своїми думками, але сьогодні настав момент такого першого посту.
Як відомо з назви, я розчарувався у фреймворкуYii, але про все по порядку.
Хтось може подумати, що дані для виведення прості та однотипні, оскільки сайт тримає таке навантаження. І він помилиться. Загальний розмір таблиць MySQL становить 1,3 Гб. Одна з основних таблиць, за якою виробляється понад 60% всього пошуку, містить 800 000 записів (і 25 полів). Для користувачів на сайті існує форма пошуку, що дозволяє вибирати дані за 10 критеріями, які виливаються в складні SQL-запити.
Так як хостинг досить простий і недорого, жодної мови проMemCache і не йдеться.
Сайт працює наCodeIgniter v1.7.2, використовується бібліотекаMPCache для кешування результатів запитів у файли. Легкий фреймворк та оптимізація коду дали такий гарний результат.
Отже, з півроку тому назріла необхідність переписати поточний двигун з додаванням типових фішок (реєстрація, блог, голосування і т.д.).CodeIgniter 2.0 здавався мені похмурим (адже за останні 2 роки він майже не змінився, не обріс функціоналом, виглядав напівтрупиком, та й багато активних розробників переповзали в станKohanaFuelPHP ), і я став дивитися у бік інших фреймворків. У Kohana сподобалося багато фішок, але мізерна документація та постійні проблеми з виходом нових версій відштовхнули від подальших розкопок. FuelPHP – смачно, швидко, але PHP5.3 у мінімальних вимогах – великий мінус.
Yii - бачив я давно. Подобався. Манив своїми можливостями, купою розширень, активною спільнотою. Скачав. Пройшов усі етапи створення блогу. Запустив.Споживанняпам'яті - 10Мб (а в піку - так майже 14Мб!). Порожній проект майже без коду з кількома записами в базі. Проект, який зроблений на коліні за вечір – та 10Мб. Можу сказати, що вищеописаний проект на lgnd.ru займає всього 0,9-1,5 Мб пам'яті залежно від сторінки, причому, експериментуючи з повним вимкненням побудови запитів, вдавалося знизити споживання до 0,6-1 Мб.
10Мб – це перебір. Вимкнув AR, переписав моделі на прямі запити - 4,5 Мб. Все одно багато. Полазив по форуму. Пишуть про кешування, про оптимізацію і т. д. Але тут виходить 2 проблеми – на дешевому хостингу немає великих ресурсів та інструментів для кешування. У результаті потрібно буде переходити на більш дорогі рішення за більш-менш серйозного онлайну.
На сайтах з дуже великою відвідуваністю все і вся не закешуєш - все одно будуть звернення повз кеш з виїдання всіх ресурсів сервера. Все одно в результаті потрібен буде потужніший сервер.
Моя думка: фреймворк має бути гарним інструментом у руках розробника, а не десятитонною бандурою для забивання цвяха у стіну.
PS. Я не хочу холиварити, який фреймворк краще/гірше. Але велике споживання пам'яті це мінусYii. Я за оптимізацію!