发表日期: 2021-04-26 14:13:06 浏览次数:101
东海小程序制作【东海企业邮箱】东海网站外包、东海微信商城开发、东海网店美工、东海淘宝设计
东海县,隶属于江苏省连云港市,素有世界水晶之都、中国温泉之乡之称,是全国首批沿海开放县、新亚欧大陆桥西行第一县,淮海经济圈、长三角经济圈、新亚欧大陆桥经济走廊交叉辐射区。 [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月,被国家发展改革委列为县城新型城镇化建设示范名单。
最后,还可以使用数组MQ队列。顾明思义,组MQ队列是将MQ存放在PHP的数组里面,用于单元测试或者是一次性、临时性的计划任务调度。
可以这样创建数据库MQ队列:
$mq = new Task_MQ_Array();复制代码
配置完MQ队列后,还需要配置调度的方式。调度的方式有两种:本地和远程调度。
本地调度的创建如下:
// 每批次弹出10个进行处理$runner = new Task_Runner_Local($mq, 10);复制代码
需要注意的是,每次执行一个计划任务,都会重新初始化必要的DI资源服务。且此调度方式不能用于接口请求时的同步调用。
远程调度,需要先添加以下配置:
/** * 计划任务配置 */ 'Task' => array( // Runner设置,如果使用远程调度方式,请加此配置 'runner' => array( 'remote' => array( 'host' => 'http://api.phalapi.net/shop/', 'timeoutMS' => 3000, ), ), ),复制代码
其中:
表3-8 远程调度配置说明
选项 | 是否必须 | 默认值 | 说明 |
---|---|---|---|
host | 是 | 接口域名链接 | |
timeoutMS | 否 | 3000 | 接口超时时间,单位毫秒 |
然后可以这样创建:
// 使用默认的连接器 - HTTP + POST的方式// 每批次弹出10个进行处理$runner = new Task_Runner_Remote($mq, 10);// 或者,指定连接器$connector = new Task_Runner_Remote_Connector_Impl();$runner = new Task_Runner_Remote($mq, 10, $connector);复制代码
Task扩展的使用
Task扩展的使用,又分为两个环节。首先是把待执行的接口服务和相关参数加入到MQ队列,然后再通过统一调度在后台异步执行。
在上面注册了DI()->task
服务后,便可通过Task_MQ::add($service, $params = array())
接口添加待执行的接口服务和相关参数到MQ队列,第一个参数$service
是待执行的接口服务,第二个可选参数$params
是传递给待执行接口服务的参数。
例如待执行的接口服务为Task.DoSth
,且需要的参数是&id=1
,那么可以:
DI()->taskLite->add('Task.DoSth', array('id' => 1));复制代码
这样,就可以把相关的信息加入队列了,通过对应的存储媒介,可以查看到对应的队列信息。在产生了队列后,接下来就是要对此队列进行消费,也就是通过计划任务来进行消费、调度。
下面是第二个环节的讲解:计划任务的启动。在启动计划任务前,我们需要编写简单的脚本,一如这样:
#!/usr/bin/env php<?phprequire_once '/path/to/Public/init.php';DI()->loader->addDirs('Demo');if ($argc < 2) { echo "Usage: $argv[0] <service> \n\n"; exit(1);}$service = trim($argv[1]);$mq = new Task_MQ_Redis();$runner = new Task_Runner_Local($mq);$rs = $runner->go($service);echo "\nDone:\n", json_encode($rs), "\n\n";复制代码
然后使用nohup或者crontab启动即可。注意上面的挂靠的项目,应该是待执行接口服务所在的目录。而使用的MQ队列,应该和前面配置的MQ保持一致,以便保证写入和消费的是同一个MQ。
除了上面简单的启动方式外,Task扩展还提供一种具体的、统一的启动方式,即使用crontab的方式。
首先,创建以下表,或参见./Library/Task/Data/phalapi_task_progress.sql文件自行调整表名称前缀。
CREATE TABLE `phalapi_task_progress` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `title` varchar(200) DEFAULT '' COMMENT '任务标题', `trigger_class` varchar(50) DEFAULT '' COMMENT '触发器类名', `fire_params` varchar(255) DEFAULT '' COMMENT '需要传递的参数,格式自定', `interval_time` int(11) DEFAULT '0' COMMENT '执行间隔,单位:秒', `enable` tinyint(1) DEFAULT '1' COMMENT '是否启动,1启动,0禁止', `result` varchar(255) DEFAULT '' COMMENT '运行的结果,以json格式保存', `state` tinyint(1) DEFAULT '0' COMMENT '进程状态,0空闲,1运行中,-1异常退出', `last_fire_time` int(11) DEFAULT '0' COMMENT '上一次运行时间', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;复制代码
接着,在Linux系统上添加crontab计划任务。
$ crontab -e*/1 * * * * /usr/bin/php /path/to/PhalApi/Library/Task/crontab.php >> /tmp/phalapi_task_crontab.log 2>&1复制代码
记得相应调整此crontab.php中挂靠的项目目录,以便能正常自动加载待执行的接口服务。还记得我们一致的风格吗?先挂靠,再使用。
备案号: 苏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