minetro/ntdb
最新稳定版本:0.9.1
Composer 安装命令:
composer require minetro/ntdb
包简介
Nette Database Nested Transaction
README 文档
README
Website 🚀 contributte.org | Contact 👨🏻💻 f3l1x.io | Twitter 🐦 @contributte
Disclaimer
| ⚠️ | This project is no longer being maintained. Please use contributte/database. |
|---|
| Composer | minetro/ntdb |
|---|---|
| Version | |
| PHP | |
| License |
Resources
Inspired by these articles:
- http://www.yiiframework.com/wiki/38/how-to-use-nested-db-transactions-mysql-5-postgresql/
- http://www.kennynet.co.uk/2008/12/02/php-pdo-nested-transactions/
- https://gist.github.com/neoascetic/5269127
Usage
Provide nested transaction via savepoints.
Support
- MySQL / MySQLi
- PostgreSQL
- SQLite
API
$t->begin$t->commit$t->rollback$t->transactionor$t->t$t->promise
Begin
Starts transaction.
$t = new Transaction(new Connection(...)); $t->begin();
Commit
Commit changes in transaction.
$t = new Transaction(new Connection(...)); $t->begin(); // some changes.. $t->commit();
Rollback
Revert changes in transaction.
$t = new Transaction(new Connection(...)); $t->begin(); try { // some changes.. $t->commit(); } catch (Exception $e) { $t->rollback(); }
Transaction
Combine begin, commit and rollback to one method.
On success it commits changes, if exceptions is thrown it rollbacks changes.
$t = new Transaction(new Connection(...)); $t->transaction(function() { // some changes.. }); // or alias $t->t(function() { // some changes.. });
Promise
Another attitude to transaction.
$t = new Transaction(new Connection(...)); $t->promise()->then( function() { // Logic.. (save/update/remove some data) }, function () { // Success.. (after commit) }, function() { // Failed.. (after rollback) } );
UnresolvedTransactionException
Log unresolved transaction.
Idea by Ondrej Mirtes (https://ondrej.mirtes.cz/detekce-neuzavrenych-transakci).
$t = new Transaction(new Connection(...)); $t->onUnresolved[] = function($exception) { Tracy\Debugger::log($exception); };
Nette
EXTENSION
extensions: ntdb: Minetro\Database\Transaction\DI\Transaction
That's all. You can let nette\di autowired it to your services/presenters.
NEON
Register as service in your config file.
services: - Minetro\Database\Transaction\Transaction
On multiple connections you have to specific one.
services: - Minetro\Database\Transaction\Transaction(@nette.database.one.connection) # or - Minetro\Database\Transaction\Transaction(@nette.database.two.connection)
Repository | Presenter
use Minetro\Database\Transaction\Transaction; class MyRepository { function __construct(Connection $connection) { $this->transaction = new Transaction($connection); } // OR function __construct(Context $context) { $this->transaction = new Transaction($context->getConnection()); } } class MyPresenter { public function processSomething() { $transaction->transaction(function() { // Save one.. // Make other.. // Delete from this.. // Update everything.. }); } }
Development
This package was maintain by these authors.
Consider to support contributte development team. Also thank you for being used this package.
minetro/ntdb 适用场景与选型建议
minetro/ntdb 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 12.26k 次下载、GitHub Stars 达 5, 最近一次更新时间为 2015 年 08 月 10 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 minetro/ntdb 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 minetro/ntdb 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 12.26k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 5
- 点击次数: 19
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: BSD-3-Clause
- 更新时间: 2015-08-10