部门网站建设注意事项,小程序开发制作软件,天津龙腾公司做网站,江苏省建设部官方网站先上设计图 说明#xff1a;任务模块分一次性任务和每日任务#xff0c;可能还包括男女用户任务区分
处理步骤#xff1a;
一、同步任务数据库 1.1、任务列表数据库 1.2、完成任务数据库
二、搭建即时消息队列
一、composer require resque/php-resque二、因为服务器red…先上设计图 说明任务模块分一次性任务和每日任务可能还包括男女用户任务区分
处理步骤
一、同步任务数据库 1.1、任务列表数据库 1.2、完成任务数据库
二、搭建即时消息队列
一、composer require resque/php-resque二、因为服务器redis设置了密码所以要修改包文件
vendor/resque/php-resque/lib/Resque.php
手动修改redis连接方法 三、在项目增加 Worker.php
3.1 增加内容
?php/***在命令行执行 QUEUEdoTask php app/jobs/Worker.php QUEUEdoTask QUEUE前面是参数* 后台执行 QUEUEdoTask nohup php app/jobs/Worker.php * QUEUE doTask:做任务*/
define(IN_APP, true);
define(APP_DIR, /www/wwwroot/seeklove_main);
require_once(APP_DIR./configs/config.inc.php);
require_once ROOT_PATH./vendor/autoload.php;
require_once(ROOT_PATH./configs/init.inc.php);
require_once(ROOT_PATH./common/functions.php);
require_once(ROOT_PATH.app/jobs/jobs.php);class Worker{/*** router cli work*/public function run(){require_once APP_DIR./vendor/resque/php-resque/bin/resque;}
}$worker new Worker();
$worker-run();说明
require_once(ROOT_PATH.app/jobs/jobs.php);处理队列中的业务文件3.2 在linux 命令窗口 执行 以下面命令将消息队列常驻内存这样有消息进来就可以立马消费掉
QUEUEdoTask nohup php app/jobs/Worker.php
3.3 jobs.php文件内容是一个类
public function perform(){fwrite(STDOUT, Start job! - );
// echo json_encode($this-args);$args $this-args;if(!empty($args)){MyJobs::{$args[type]}($args[data]);}fwrite(STDOUT, Job ended! . PHP_EOL);}
3.4 增加通用文件doTask方法为我处理任务模块用的
class MyJobs
{public function __construct(){
// $redis new RedisConn();
// $this-redis $redis-getConn();
// Resque::setBackend($this-redis-getHost().:.$this-redis-getPort(),$this-redis-getDbNum(),$this-redis-getAuth(),$this-redis);}//做任务public static function doTask($data){$TaskM new TaskModel();$TaskM-doTask($data[uid],$data[sign]);}
}
说明
askModel()是具体的业务逻辑处理
任务模块的业务逻辑包括
1、判断任务完成状态
2、更新用户奖励
3、写入记录
4、更新任务完成状态
5、写完成的任务缓存
6、发送消息通知给用户 注意点Resque.php下载下来是有问题的需要修改写入内存和常驻内存要熟悉命令。
修改了核心文件需要重启执行命令。