
发表日期: 2021-04-26 10:44:31 浏览次数:87
溧阳网站制作【溧阳网站优化】溧阳建网站、溧阳微信公众号运营、溧阳网页设计、溧阳微信小程序商城
溧阳,隶属江苏省,由常州市代管的县级市 ,位于江苏省西南部,地处长江三角洲,与苏、浙、皖三省接壤。是南京都市圈成员城市 [1] ,宁杭生态经济带上的重要副中心城市和示范区。位于北纬31°09'-31°41',东经119°08'-119°36',东邻宜兴,西与高淳、溧水毗邻,南与安徽省的广德、郎溪接壤,北接句容、金坛,南北长59.06千米,东西宽45.14千米,土地总面积1535.87平方千米。 [2] 溧阳属亚热带季风气候,干湿冷暖,四季分明,雨量充沛,无霜期长,全年平均温度17.5℃,其中:一月份3.2℃,七月份31.1℃。年均降水量1149.7毫米。其中,一月份42.2毫米,七月154.1毫米。大约日照时间,一月份137.6小时,七月份229小时。 [3]
溧阳有耕地面积112万亩,林地32.8万亩,河流和湖泊42.6万亩。物产丰富,是著名的“鱼米之乡”、“丝绸之乡”、“茶叶之乡”,经济连续多年名列全国百强县(市)。溧阳文化属吴越文化,溧阳人属江浙民系使用吴语。盛产稻、麦、油、茶、蚕茧、螃蟹、板栗、西瓜、毛竹等。 [4] 2020年10月9日,被生态环境部命名为第四批“绿水青山就是金山银山”实践创新基地。2020年11月,入选水利部第一批深化小型水库管理体制改革样板县(市、区)名单。2020年12月,社科院发布《全国县域经济综合竞争力100强》,溧阳排名第25 [5] 。
默认只有一从数据库的配置,并支持分表分库配置。当需要数据库从库时,可以参考./Config/dbs.php配置,复件一份作为从库的配置,例如:
$ cp ./Config/dbs.php ./Config/dbs_slave.php复制代码
然后,注册一个数据库从库的notorm时,指定使用从库的配置。
DI()->notormSlave = function() {
return new PhalApi_DB_NotORM(DI()->config->get('dbs_slave'), DI()->debug); //注意:配置不同};复制代码最后使用此从库的服务DI()->notormSlave即可完成对从库的读取操作,用法同DI()->notorm,这里不再赘述。
正如前文在Model基类中提到的两个问题:LOB序列化和分表处理。如果PhalApi现有的解决方案不能满足项目的需求,可进行定制化处理。
LOB序列化
先是LOB序列化,考虑到有分表的存在,当发生数据库变更时会有一定的难度和风险,尤其是在线上生产环境。因此引入了扩展字段ext_data。当然,此字段在应对数据库变更的同时,也可以作为简单明了的值对象的大对象。序列化LOB首先要考虑的问题是使用二进制(BLOB)还是文本(CLOB),出于通用性、易读性和测试性,我们目前使用了json格式的文本序列化。例如考虑到空间或性能问题,可以重写格式化方法PhalApi_Model_NotORM::formatExtData()和解析方法PhalApi_Model_NotORM::parseExtData()。
比如改成serialize序列化:
<?phpclass Common_Model_NotORM extends PhalApi_Model_NotORM {
/**
* 对LOB的ext_data字段进行格式化(序列化)
*/
protected function formatExtData(&$data) {
if (isset($data['ext_data'])) {
$data['ext_data'] = serialize($data['ext_data']);
}
}
/**
* 对LOB的ext_data字段进行解析(反序列化)
*/
protected function parseExtData(&$data) {
if (isset($data['ext_data'])) {
$data['ext_data'] = unserialize($data['ext_data'], true);
}
}
// ...}复制代码然后编写继承于Common_Model_NotORM的Model子类。
<?phpclass Model_User extends Common_Model_NotORM {
//...}复制代码就可以轻松切换到序列化,如:
$model = new Model_User();// 带有ext_data的更新$extData = array('level' => 3, 'coins' => 256);$data = array('name' => 'test', 'update_time' => time(), 'ext_data' => $extData);// 基于主键的快速更新$model->update(1, $data);复制代码分表下的主键设定
在存在分表过多的情况下,框架会根据配置自动匹配不同表的不同主键配置。因为Model基类中的CURD基本操作是基于主键进行的,所以这里的问题就演变成了如何快速找到表的主键名。
当然,这里是可以继续使用框架默认的自动匹配算法。若表主键是固定且统一的,为了提升性能,可重写PhalApi_Model_NotORM::getTableKey($table)方法来指定主键名。

服务热线
顶部
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: http://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878