|
@@ -7,16 +7,47 @@ use think\facade\Config;
|
|
|
use think\facade\Log;
|
|
use think\facade\Log;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+/**
|
|
|
|
|
+ * 这个 Task 表示异步任务的基类, 借助于 beanstalkd 等服务来异步执行或延后执行
|
|
|
|
|
+ *
|
|
|
|
|
+ * HOWTO
|
|
|
|
|
+ *
|
|
|
|
|
+ * 首先根据特定的任务,实现一个子类, 比如 SomeTask
|
|
|
|
|
+ *
|
|
|
|
|
+ * class SomeTask extends Task {
|
|
|
|
|
+ * public static function push($param1, $param2, $param3) {
|
|
|
|
|
+ * self::put([
|
|
|
|
|
+ * 'param1' => $param1,
|
|
|
|
|
+ * 'param2' => $param2,
|
|
|
|
|
+ * 'param3' => $param3
|
|
|
|
|
+ * ]);
|
|
|
|
|
+ * }
|
|
|
|
|
+ *
|
|
|
|
|
+ * protected static function getCmd() {
|
|
|
|
|
+ * return 'some_task';
|
|
|
|
|
+ * }
|
|
|
|
|
+ *
|
|
|
|
|
+ * protected static function exec(array $param) {
|
|
|
|
|
+ * //Do something
|
|
|
|
|
+ * }
|
|
|
|
|
+ * }
|
|
|
|
|
+ *
|
|
|
|
|
+ * // 消费任务的代码实现
|
|
|
|
|
+ * // read from beanstalk
|
|
|
|
|
+ * SomeTask::exec($param)
|
|
|
|
|
+ *
|
|
|
|
|
+ * 增加任务到 beanstalkd 代码
|
|
|
|
|
+ */
|
|
|
abstract class Task {
|
|
abstract class Task {
|
|
|
/**
|
|
/**
|
|
|
- * 得到任务 cmd 标识, 任务类别
|
|
|
|
|
|
|
+ * 虚函数。返回任务 cmd 标识, 任务类别
|
|
|
*
|
|
*
|
|
|
* @return string
|
|
* @return string
|
|
|
*/
|
|
*/
|
|
|
abstract protected static function getCmd();
|
|
abstract protected static function getCmd();
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * 执行从 beanstalkd 中取出的任务数据 $task.
|
|
|
|
|
|
|
+ * 虚函数。执行从 beanstalkd 中取出的任务数据 $task.
|
|
|
*
|
|
*
|
|
|
* @return boolean
|
|
* @return boolean
|
|
|
*/
|
|
*/
|