发表日期: 2021-04-26 14:14:11 浏览次数:118
东海企业微信公众号小程序开发公司、东海企业网页设计方案、东海做网站开发价格、东海微信公众号制作运营报价明细表、东海网站设计公司费用、东海网站推广大概需要多少钱
东海县,隶属于江苏省连云港市,素有世界水晶之都、中国温泉之乡之称,是全国首批沿海开放县、新亚欧大陆桥西行第一县,淮海经济圈、长三角经济圈、新亚欧大陆桥经济走廊交叉辐射区。 [1]
东海县位于江苏省东北部,地处江苏、山东两省交界处,东濒黄海,西接彭城,南依江淮,北界齐鲁;北至西北与山东省临沭县、郯城县相连,东与连云港海州区、赣榆区接壤,南与沭阳县交界,西与新沂市相依;全县总面积2037平方公里,人口124万,辖19个乡镇(场)、2个街道、1个省级经济开发区、1个省级高新区和1个省级旅游度假区。 [2]
东海县资源丰富、特色鲜明,拥有“石、泉、湖、井、画”等五张特色名片,先后被评为全国粮食生产先进县、全国科技进步考核先进县、国家卫生县城、国家级生态县、全国文化先进县、中国观赏石(水晶)之乡、江苏省级园林城市、百湖之县、中国民间艺术之乡等美誉,先后培养出南朝诗人鲍照、现代散文家朱自清、当代版画家彦涵等历史文化名人。 [3]
2016年11月,东海被国家旅游局评为第二批国家全域旅游示范区。2018年10月,东海县入选“综合实力百强县”、 [4] 全国投资潜力百强县市、 [5] 全国绿色发展百强县市、全国新型城镇化质量百强县市。2019年3月,被列为第一批革命文物保护利用片区分县名单。2019年7月,被列为国家知识产权强县工程示范县(区)。 [6] 2019年10月8日,被评为2019年度全国综合实力百强县市。2020中国夏季休闲百佳县市。 [7] 2020年5月,被国家发展改革委列为县城新型城镇化建设示范名单。
最后,在数据库配置计划任务。
INSERT INTO `phalapi_task_progress`(title, trigger_class, fire_params, interval_time) VALUES('你的任务名字', 'Task_Progress_Trigger_Common', 'Task_Demo.DoSth&Task_MQ_File&Task_Runner_Local', '300');复制代码
注意,在配置时,需要指明MQ和Runner的类型。各个字段的说明,可参考上面的表字段的说明。
这些都配置好后,当再Task.DoSth加入到MQ队列时,后台将会定时执行对应的接口服务。即下面这样的代码。
<?php
class Api_Task extends PhalApi_Api {
public function doSth() {
// ...
}
}复制代码
延伸:计划任务的核心设计解读
在Task这个计划任务中,为了让领域业务更清晰明了,我们采用了设计模式进行了巧妙的设计。下面将介绍这一设计过程。主要是以桥接模式为主模式,慢慢融入适配器模式、模板方法,同时辅以单元测试和小步重构。
桥接模式 - 数据与行为独立变化
为了给计划任务一个执行的环境,我们提供了计划任务调度器,即:Task_Runner。每个计划任务需要调度的接口是不一样的,即不同的接口服务决定不同的行为;每个行为需要的数据也不一样,即不同的接口参数决定不同的数据。
自然而言的,Task_Runner按照桥接模式,其充当的角色如下:
图3-14 Task_Runner充当的角色
图3-14 Task_Runner充当的角色
然后,我们可以分另各自实现接口服务和MQ队列,而让这两者互不影响。
图3-15 桥接模式在Task扩展中的应用
图3-15 桥接模式在Task扩展中的应用
适配器模式 - 对象适配器和类适配器
在对MQ进行实现时,我们提供的Redis MQ队列、文件MQ队列和数据库MQ队列等,都使用了适配器模式,以重用框架已有的功能。其中,Redis MQ队列和文件MQ队列是属于对象适配器,数据库MQ队列是类适配器。对于对象适配器,我们也提供了外部注入,以便客户端在使用时可以轻松定制扩展,当然也可以使用默认的缓存。
至此,整体的UML静态类结构如下所示。
图3-16 添加适配器后的静态结构
图3-16 添加适配器后的静态结构
这样以后,我们可以这样根据创建不同的MQ队列,创建MQ的形式多种多样。
// Redis MQ队列
$mq = Task_MQ_Redis();
// 或
$mq = Task_MQ_Redis(new PhalApi_Cache_Redis(array('host' => '127.0.0.1', 'port' => 6379)));
// 文件MQ队列
$mq = new Task_MQ_File();
// 或
$mq = new Task_MQ_File(new PhalApi_Cache_File(array('path' => '/tmp/cache')));
// 数据库MQ队列
$mq = new Task_MQ_DB();
// 数组MQ队列
$mq = new Task_MQ_Array();复制代码
模板方法 - 本地和远程两种调度策略
在完成底层的实现后,我们可以再来关注如何调度的问题,目前可以有本地调度和远程调度两种方式。
本地调度 是指本地模拟接口的请求,以实现接口的调度。
远程调度 是指通过计划任务充当接口客户端,通过请求远程服务器的接口以完成接口的调度。
为此,我们的设计演进成了这样:
图3-17 细化调度方式后的静态结构
图3-17 细化调度方式后的静态结构
上图多了两个调度器的实现类,并且远程调度器会将远程的接口请求功能委托给连接器来完成。
设计审视
好了!让我们再回头审视这样的设计,是否是属于良好的设计,是否是恰如其分的设计。
首先,我们在高层,也就是规约层得到了很好的约定。不必过多地深入理解计划任务内部的实现细节,也可以轻松得到以下这样的概念流程: 计划任务调度器(Task_Runner)从MQ队列(Task_MQ)中不断取出计划任务接口服务(PhalApi_Api)进行消费。所以在概念是它是清晰的,很好地体现了计划任务这一领域的核心业务流程。
再往下一层,则是具体的实现,即我们所说的实现层。客户可以根据自己的需要进行选取使用,也可以扩展他们需要的MQ队列。重要的是,他们需要自己实现计划任务的接口服务。
根据爱因斯坦说的,要保持简单,但不要过于简单。为了更好地理解计划任务的运行过程,我们提供了简单的时序图。
东海企业微信公众号小程序开发公司、东海企业网页设计方案、东海做网站开发价格、东海微信公众号制作运营报价明细表、东海网站设计公司费用、东海网站推广大概需要多少钱
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: https://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878