На Yii сижу около 1,5 года. Когда начал изучать была еще верси 1.0.9 помойму. Отличный фреймворк, все проекты делаю на нем.
уважаемый топик стартер, подскажи такую штуку. в некоторых комментах встречаю утверждения, что myisam быстрее innodb, но во втором есть транзакции. в уии за них отвечает beginTransaction(), но в мануале чтото не встречал требований фреймворка относительно того, что нужно юзать только innodb для работоспособности этого метода. выходит, что и myisam прокатывает. Каким макаром фрейм уговаривает myisam поддерживать транзакции? Тупо вставляет записи по порядку, а если последняя, например, не вставилась, то делает запрос на удаление предыдущих? и еще хотел бы заказать песню группы Руки вверх...
Yii работает через PDO. Как PDO себя поведет - так и будет. А PDO вроде как просто тупо игнорирует транзакции без генерирования ошибок.
игнорирует - то есть не исполняет? вроде откат транзакции работает и на innodb и на myisam (об обратном ничего не сказано в уии). только как этот откат происходит в последней.
Фреймворки не предназначены для коррекции ошибок проектирования, которые даже сама MySQL за ошибку не считает. С чего бы генерировать какую-то ошибку, если MySQL сама генерирует только варнинг, да и то только на роллбеке. Хотя в документации про PDO есть пару строчек про поддержку транзакций и как PDO на это реагирует.
MiksIr всеравно это не правильно с точки зрения составления мануала. в описании метода могли бы упомянуть
Если следовать вашей же логики, то в документации не сказано, что они написали что-то отдельное свое для транзакций, а значит, что они ничего не писали, и как результат - поведение определяется базой. Странно документировать то, что они не писали.
MiksIr фрейм - это уже "чтото отдельное свое" по сути. это не натив пхп. приведу аналогию с jquery - куча браузеров и не все их фишки поддерживаются фреймворком. то что он не может сделать кроссбраузерным - то он вообще в себе не реализует. (или указано в мануале. с получение версии браузера косяк происходит вроде) такого же поведения я предполагаю увидеть в уии. не удается сделать транзакции для myisam - значит либо не делать такого метода вовсе или указать о этом нюансе в мануале. Вроде все логично.
Нет, вы не увидите такого функционала ни в yii ни в ином любом другом PHP фреймворке, написанным вменяемыми людьми.
Думаю, кто работает с Yii и пробует PhpStorm, будет интересна такая вот фича http://youtrack.jetbrains.net/issue/WI-2225 Я к тому, что нада голосовать =) А то после Model()::model()->find() задолбался уже хинты прописывать, что у меня возвращается Model а не CActiveRecord
MiksIr Я тут немного инфы нарыл, пока искал кой-чего. Вспомнил, что уии на pdo работает и про эти самые транзакции. Вобщем, исходя из той мной нарытой инфы, если сама бд не обеспечивает нативных транзакций (как в случае с MySQL + MyISAM), то pdo эмулирует своими средствами, как будто транзакции поддерживаются. Следовательно, в уии не зачем упоминать о типе таблиц в бд (или типе бд вообще), так как транзации в любом случае будут работать, хоть и не нативно.
Клиент не может эмулировать транзакции. Принципиально. О том, поддерживает ли конкретный драйвер PDO транзакции или нет - говорит он сам (как бы зашито флагом в драйвере). Но в случае с мускулем, где поддержка может быть (innodb) а может и не быть (myisam) драевер просто говорит - что они есть. Проверять тип таблиц - это уже не его работа, тем паче они могут быть смешанные.
Обожаю Yii за ее продуманность. За что не возьмешься - Yii к этому готов. + Код Yii написан грамотно и понятно. По мощности Yii опережает только Симфони, но симфони - это много мороки на пустом месте. Врядли что-то можно сделать лучше на Симфони, чем на Yii, но, точно, на Симфони уйдет больше времени на изучение и написание длинных, никому не нужных, конструкций.
Под мощностью фреймворка я понимаю способность ядра (именно ядра, а не плагинов) выполнять те или иные функции. Например, параметры по которым можно сравнивать "мощность" работы с базой данных (мы говорим, опять же, про ядро): - Поддержка разных типов баз данных - Встроенная поддержка транзакций - Удобное и информативное профилирование - Поддержка миграций - Удобной построитель запросов При этом главное не только количество функций ядра, но и - Удобство использования эти функциями - Простоту их изменения "под себя"
Нет общего понятие "лучше". Каждому свое. Это как машины - нельзя сказать, что "ауди" лучше чем "девятка", потому что придет кто-то и скажет: "девятку лучше, потому что а) она дешевле, б) запчастей много и в) бить не жалко". Тут не поспоришь. А вот с тем, что а) ауди мощней девятке, б) ауди долговечней девятки и т.д - это как постулаты. Тут спорить нечего. Ситуация с фреймворками аналогичная.
tommyangelo да-да типо того. софизм и враньё. да симфоени быстрее, чем yii, можно дополнительно подключить сотню модулей из зенда, , миграции, форм билдер, работа с конфигурациями в разных форматах, разные окружения (тесты\рабочее) а не одно. ещё есть http://fuelphp.com/ говорят классная вещь, но я не видел.
Михаил В Yii можно дополнительно подключить сотню модулей из зенда, есть миграции, есть еще много чего. Я к сожалению с Симфони не работал, да и на Yii ничего супер-сложного не делал, так что тяжело сравнивать. Возможно, ты тоже после более плотного знакомства с Yii изменишь своё мнение.
2 Михаил Расскажите всем, как вы мерили скорость Yii и Симфони, приведите результаты тестов, код. Пока всего этого нет - ваши слова пусты, как незаполненная форма ответа на этом форуме.