neconix/yii2-oci8
Composer 安装命令:
composer require neconix/yii2-oci8
包简介
Yii2 extension which uses well written pdo-via-oci8 package for standard PHP Oracle functions (OCI8)
README 文档
README
Yii2 OCI8 extension which uses well written yajra/pdo-via-oci8 with optional full table schema caching. Supported PHP7.
Supported
- Yii 2.x;
- yajra/pdo-via-oci8 1.x;
- >= PHP 5.4;
- >= PHP 7.0.
Installation
Add to your composer.json file:
"require": {
"neconix/yii2-oci8": "1.*"
}
And then run composer update.
Yii2 configuration example for an Oracle database
Yii2 configuration:
$config = [ ... 'components' => [ ... 'db' => require(__DIR__ . '/db.php'), ... ] ];
Database configuration in db.php:
return [ 'class' => 'neconix\yii2oci8\Oci8Connection', 'dsn' => 'oci:dbname=//192.168.0.1:1521/db.local;charset=AL32UTF8;', 'username' => 'user', 'password' => 'pass', 'attributes' => [ PDO::ATTR_PERSISTENT => true ], 'enableSchemaCache' => true, //Oracle dictionaries is too slow :(, enable caching 'schemaCacheDuration' => 60 * 60, //1 hour 'on afterOpen' => function($event) { /* A session configuration example */ $q = <<<SQL begin execute immediate 'alter session set NLS_SORT=BINARY_CI'; execute immediate 'alter session set NLS_TERRITORY=AMERICA'; end; SQL; $event->sender->createCommand($q)->execute(); } ];
Example
Feel free to use Yii2 ActiveRecord methods:
$cars = Car::find()->where(['YEAR' => '1939'])->indexBy('ID')->all();
Getting a raw database handler and working with it:
$dbh = Yii::$app->db->getDbh(); $stmt = oci_parse($dbh, "select * from DEPARTMENTS where NAME = :name"); $name = 'NYPD'; oci_bind_by_name($stmt, ':name', $name); oci_execute($stmt); ... //fetching result
Caching features
To enable caching for all tables in a schema add lines below in a database connection configuration db.php:
... //Disabling Yii2 schema cache 'enableSchemaCache' => false //Defining a cache schema component 'cachedSchema' => [ 'class' => 'neconix\yii2oci8\CachedSchema', // Optional, default is the current connection schema. 'cachingSchemas' => ['HR', 'SCOTT'], // Optional. This callback must return `true` for a table name if it need to be cached. 'tableNameFilter' => function ($tableName, $schemaName) { //Cache everything but the EMP table from HR and SCOTT schemas return $tableName != 'EMP'; } ], ...
Table schemas saves to the default Yii2 cache component. To build schema cache after a connection opens:
'on afterOpen' => function($event) { $event->sender->createCommand($q)->execute(); /* @var $schema \neconix\yii2oci8\CachedSchema */ $schema = $event->sender->getSchema(); if (!$schema->isCached) //Rebuild schema cache $schema->buildSchemaCache(); },
neconix/yii2-oci8 适用场景与选型建议
neconix/yii2-oci8 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 22.33k 次下载、GitHub Stars 达 9, 最近一次更新时间为 2016 年 09 月 20 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「database」 「oracle」 「yii2」 「oci8」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 neconix/yii2-oci8 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 neconix/yii2-oci8 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 neconix/yii2-oci8 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Dibi is Database Abstraction Library for PHP
Store your language lines in the database, yaml or other sources
A custom URL rule class for Yii 2 which allows to create translated URL rules
Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.
A package for automatically encrypting and decrypting Eloquent attributes in Laravel 5.5+, based on configuration settings.
oracle per progetti Fifree2
统计信息
- 总下载量: 22.33k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 9
- 点击次数: 12
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2016-09-20