Вопрос по ресурсопотреблению.

Cколько оперативной памяти в среднем должно потреблять приложение на Yii. Хотелость бы узнать подобные цифры относительно других фреймворков, цмс и т.д.

Зависит от проекта. Для Hello world одно, для мега-портала - другое.

Мне не нужны точные цифрты. Хотелость бы иметь хоть какое либо представление, например просто для корпоративного сайта, или блога. В каких пределах колеблються эти цифры. Например, если базовое приложение Yii потребляет до трех мегабайт, то сколько ожидать от приложения, выводящее на странице меню (из базы данных), контент страницы (тоже из БД) и еще какие нибудь опрсники, коментарии, новости.

Довольно толстая служба знакомств —  4591.18Kb.

Спасибо за ответ.

Отличаются ли по потреблению памяти другие фреймворки при реализации аналогичных проектов. Выделяется ли в этом плане фреймворк Yii в лучшую сторону?

Отличается. Меньше из известных мне только у CodeIgniter.

Потребление памяти еще очень сильно зависит от оптимизированности вашего приложения.

Например, если при формировании меню идет работа через ActiveRecord - это одно, а если напрямую через sql -  гораздо меньше.

Вот это стоящий совет, не знал. Благодарю.

Вот мой блог на yii кушает 3.5-4мб.

В котором меню формируется в виде дерева (через бд), выводятся посты, комменты и тп. Всё весьма не оптимизировано на данный момент, но работает вроде шустро.

Поддерживаю Ozzy, мой блог на Yii (http://yupe.allframeworks.ru/) пока в процессе разработки - в среднем кушает около 5 мегабйт памяти - использую ActiveRecord.

Делаю один проект, там на одной странице идет активная выборка из 7 разных таблиц.

Раньше занимало 9 мегабайт. Сейчас перевел все на sql - используется до 4,5 мб.

Из этого я сделал вывод, что ActiveRecord хорошо для создания и редактирования записей, и для выборки только на этапе создания первичного функционала, который потом нуждается в оптимизации и перевод на рельсы простого sql.

Но обычный sql усложняет жизнь длинными запросами и переход с ActiveRecord на sql может быть еще здорово усложнен, если мы используем named-scope'ы.

Я не нашел возможности формировать чистый sql с помощью named-scope'ов и переписал метод findAll() для моделей:



	public function findAll($condition = '', $params = array())


	{


		$criteria = $this->getDbCriteria();


		if ($condition)


			$criteria->mergeWith(array(


				'condition' => $condition,


				'params' => $params));


		$this->_c=null;


		return $this->getCommandBuilder()->createFindCommand($this->getTableSchema(), $criteria)->queryAll();


	}


Теперь, например, $posts = Post::model()->findAll() возвращает в большом массиве все найденные записи, а не объекты этих записей. Это позволяет очень здорово экономить память.

Единственно, теперь к $posts надо обращаться не как к массиву объектов, а как к массиву массивов. Это требует простого исправления с $post->title на $post['title'], например.

Ну, и конечно можна не переписывать findAll(), а написать параллельно что-то свое, типа getAll(). И также можно поработать с остальными методами из "семейства" find.

Я наверное побью рекорд. Корпоративный кнутренний проект. В экшенах используется от трёх, до пяти связанных таблиц с ActiveRecord и по несколько тысяч записей в каждой.

Кэширование включено. Используется APC, yiilite. Кушает от 25 Мб до 50 на запрос. И без разницы даже как установленphp (mod_php5, fastcgi, cgi).

До того как включил кэш и прочее было от 30 до 60 Мб.

Примерно похожий функционал реализованный на zend framework по всем правилам лопал от 50 Мб на запрос.

Однако на производительность сильно не жалуемся. Хотя в среднем выходит 16.5 rps.