PHP ORM _ Управление соединениями - PullRequest
0 голосов
/ 25 апреля 2011

Какая платформа PHP ORM является хорошей и легкой, также имеет пул соединений и управление соединениями, как и в Hibernate Framework

Ответы [ 2 ]

2 голосов
/ 25 апреля 2011

Из-за способа работы PHP вы не найдете ничего, что можно сравнить с пулами подключений.На самом деле, самое близкое, что вы можете получить - это постоянные соединения, которые имеют свои подводные камни.

Лично мне нравится Propel , хотя назвать его легким - своего рода субъективное.Я не совсем уверен, что означает «управление соединениями», но propel предназначен для обработки нескольких соединений с базой данных, а также маршрутизации «главный / подчиненный» на основе запроса.Вы можете набрать скорость в ORM с определенной оптимизацией (APC, Memcached и т. Д.).Такие вещи, как увлажнение объекта, также помогают ускорить ваше приложение.

Проверьте это.Это не для всех.

(Ради завершения другой популярный ORM для PHP называется Doctrine. Это лично мне не нравится.)

РЕДАКТИРОВАТЬ

Один изсильными сторонами Propel (для меня) была его интеграция с Phing.Я думаю, что из среды jboss вам не хватает таких вещей, как процесс развертывания кода.Для меня phing решает многие из этих проблем.Поскольку мне нужно установить phing для работы propel, я могу использовать его для развертывания всего приложения.

Если вы чувствуете себя смелым, Phing может бросать шарики, почтовые файлы, груши или даже RPM.

0 голосов
/ 06 апреля 2015

Я считаю db.php orm чрезвычайно легким и легким, и он не ограничивает соединения, и вы можете указать, какая таблица для какого класса находится в каком соединении:

http://dbphp.net/connect-using-many-links/

Недостаток фреймворка в том, что он, похоже, новорожденный, и документация по github repo обновляется 2-3 раза в неделю, но я уже использую его в своей среде электронной коммерции и могу сказать, что полностью удовлетворен.

Я не знаю, если вы укажете подробности, но когда вы определяете ссылку на соединение в db.php, вы также указываете нужное имя для этой ссылки, например:

$database->link (new \db\link ('my_mysql_link_name', 'mysql:host=127.0.0.1', 'root', '1234'));

И если это не ссылка по умолчанию (первая ссылка), тогда вы должны указать ее для своего класса (если у вас есть класс, таблица которого находится в базе данных ссылок не по умолчанию):

/**
* link my_mysql_link_name
*/
class user
{

}

И после добавления этого обработчика таблицы классов в базу данных:

$database->add ('\user);

Тогда все запросы в этом обработчике таблицы классов будут выполняться по указанной пользователем ссылке:

$database->save (new \user());

Таким образом, строка выше будет использовать ссылку соединения my_mysql_link_name для запроса.

Я также заметил одну интересную вещь: если у меня есть настройка отношений между свойствами класса, то db.php извлекает связанные строки (один в один случай) с левым соединением в том же запросе, если связанные таблицы полей находятся на одной и той же ссылке на соединение, в противном случае он будет использовать отдельные запросы для извлечения связанных строк для объектов (также вы можете указать ленивое ключевое слово в комментарии к документу свойства, чтобы избежать загрузки связанных объектов).

О, а также вы всегда можете получить доступ к своим соединениям, как это: $database->link('name_of_link') или $database->link() для ссылки на соединение по умолчанию, и вы можете просто добавить свой собственный класс в качестве ссылки на базу данных и переопределить все методы ссылки, как описано здесь:

http://dbphp.net/connect-using-custom-link/

И еще одно, что мне больше всего нравится в db.php, это то, что он автоматически создает или синхронизирует базы данных и структуры таблиц по всем ссылкам, просто вызывая $database->update(). <3 </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...