
发表日期: 2021-04-26 09:55:49 浏览次数:108
启东网站推广【启东办理400电话】启东SEO优化、启东微信公众号APP客户端小程序开发、启东网站托管、启东APP开发
启东市,江苏省直辖,南通市代管,位于江苏省东南端,长江入海口北岸,是江苏省日出最早的地方。 [1] 户籍总人口110.35万,常住人口94.95万(2019年)。 [2] 截至2020年6月,启东市下辖9个镇。 [3]
后周显德五年(958年),置海门县于东布洲,隶于通州,海门县域包括今启东中部、北部地区。民国十七年(1928年),于崇明外沙设启东县。1989年,撤销启东县,设立县级启东市。 [14] [56]
启东是全国对外开放口岸 [4] 、中国建筑之乡 [5] 、国家卫生城市 [6] 、国家园林城市 [7] 、全国文明城市 [8] 、国家级生态示范区 [9] 、节水型社会建设达标县 [10] 、紧密型县域医共体建设试点县 [11] 、革命文物保护利用片区分县 [12] ,海洋经济之乡、电动工具之乡、建筑之乡、教育之乡、版画之乡。 [1]
2019年,启东市地区生产总值1157.55亿元,第一产业增加值79.64亿元,第二产业增加值581.29亿元,第三产业增加值496.62亿元。三次产业比为6.9:50.2:42.9。人均地区生产总值121879元。
而在服务端,仅需要在这些不同的入口文件,修改一下配置文件目录路径即可:
//$ vim ./Public/shop/test.phpDI()->config = new PhalApi_Config_File(API_ROOT . '/Config/Test');复制代码
另外,也可以使用相同的访问入口,但通过客户端在请求时带参数来作区分,如带上&env=test或者&env=prod。
但个人最为建议的还是在持续集成下进行配置管理。因为首先,持续集成中的发布应该是经常性的,且应该是自动化的。所以,既然有自动化的支持,我们也应该及早地将配置纳入其中管理。
配置文件不同只要是环境不同,而环境不同所影响的配置文件通常只有sys.php和dbs.php;为此,我们为测试环境和生产环境准备了各自的配置文件,而在发布时自动选择所需要的配置文件。一般地,我们建议生产环境的配置文件以.prod结尾。所以,这时我们的配置文件可能会是这样:
$ tree ./Config/./Config/├── app.php├── app.php.prod├── dbs.php├── sys.php└── sys.php.prod复制代码
这里多了生产环境的配置文件:dbs.php.prod和sys.php.prod。
再通过发布工具,我们就可以对不同环境的配置文件进行快速选择了。这里以phing为例,说明一下相关的配置和效果。
在Phing的配置文件build.xml中,在生产环境发布过程中,我们将配置文件进行了替换。
<copy file="./Config/dbs.php.prod" tofile="./Config/dbs.php" overwrite="true" /> <copy file="./Config/sys.php.prod" tofile="./Config/sys.php" overwrite="true" />复制代码
执行phing发布后,将会看到对应的这样提示:
[copy] Copying 1 file to /path/to/PhapApi/Config [copy] Copying 1 file to /path/to/PhapApi/Config复制代码
Yaconf扩展需要PHP 7及以上版本,并且需要先安装Yaconf扩展。
温馨提示:Yaconf扩展的安装请参考laruence/yaconf。
安装部署完成后,便和正常的配置一样使用。
// 注册DI()->config = new PhalApi_Config_Yaconf();// 相当于var_dump(Yaconf::get("foo"));var_dump(DI()->config->get('foo'));//相当于var_dump(Yaconf::has("foo"));var_dump(DI()->config->has('foo'));复制代码需要注意的是,使用Yaconf扩展与默认的文件配置的区别的是,配置文件的目录路径以及配置文件的格式。当然也可以把Yaconf扩展的配置目录路径设置到PhalApi的配置目录./Config。
虽然上面有不同的配置文件管理策略,但很多实际情况下,我们的配置需要可以随时更改、下发和调整。并且在海量访问,性能要求高的情况下快速读取配置。
这就要求我们的项目既可以方便维护即时修改,又需要能够快速同步一致更新下发和读取。这样就涉及到了配置更高层的管理:统一集中式的配置管理,还是分布式的配置管理?文件存储,还是DB存储,还是MC缓存,还是进驻内存?
这里不过多地谈论配置更多的内容,但在PhalApi框架中,根据需要实现PhalApi_Config::get($key, $default = NULL)接口后,再次简单的在入口文件重新注册即可。
PhalApi的数据库操作基于NotORM,并且专为海量数据而设计,即可支持分库分表的配置。此外,还有辅助的SQL生成脚本命令、在线调试功能。
NotORM是一个优秀的开源PHP类库,可用于操作数据库。PhalApi的数据库操作,主要是依赖此NotORM来完成。
参考:NotORM官网:www.notorm.com。
所以,如果了解NotORM的使用,自然而然对PhalApi中的数据库操作也就一目了然了。但为了更符合接口类项目的开发,PhalApi对NotORM的底层进行优化和调整。以下改动点包括但不限于:
将原来返回的结果全部从对象类型改成数组类型,便于数据流通
添加查询多条纪录的接口:NotORM_Result::fetchAll()和NotORM_Result::fetchRows()
添加支持原生SQL语句查询的接口:NotORM_Result::queryAll()和NotORM_Result::queryRows()
limit 操作的调整,取消原来OFFSET关键字的使用
当数据库操作失败时,抛出PDOException异常
将结果集中以主键作为下标改为以顺序索引作为下标
禁止全表删除,防止误删
调整调试模式
在PhalApi中获取NotORM实例,有两种方式:全局获取方式、局部获取方式。
全局获取:在任何地方,使用DI容器中的全局notorm服务:DI()->notorm
局部获取:在继承PhalApi_Model_NotORM的子类中使用:$this->getORM()
第一种全局获取的方式,可以用于任何地方,这是因为我们已经在初始化文件中注册了DI()->notorm这一服务。
// 数据操作 - 基于NotORMDI()->notorm = new PhalApi_DB_NotORM(DI()->config->get('dbs'), DI()->debug);复制代码然后,再添加表名属性,即可使用相应的数据库表实例了。如user表的实例:DI()->notorm->user。
第二种局部获取的方式,仅限用于继承PhalApi_Model_NotORM的子类中。首先需要实现相应的Model子类,通常一个表对应一个Model子类。例如为user表创建相应的Model类。
<?phpclass Model_User extends PhalApi_Model_NotORM {
protected function getTableName($id) {
return 'user';
}
public function doSth() {
// 获取NotORM表实例,在这里相当于:DI()->notorm->user
$user = $this->getORM();
}}复制代码与全局获取方式不同的是,$this->getORM()获取的就已经是表实例,不需要再在后面添加表名。
使用NotORM时,值得注意的是,NotORM的表实例是有内部状态的,即可以保持操作状态。故而在开发过程中,需要特别注意何时需要保留状态(使用同一个实例),何时不需要保留状态(使用不同的实例)。

启东网站推广【启东办理400电话】启东SEO优化、启东微信公众号APP客户端小程序开发、启东网站托管、启东APP开发
服务热线
顶部
备案号: 苏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