TaskService.class.php
2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
/**
* Created by PhpStorm.
* User: liyifei2012it
* Date: 17/4/20
* Time: 15:10
*/
namespace Common\Service;
use VcySDK\Service;
use VcySDK\Cron;
use Think\Log;
use Common\Model\TaskModel;
class TaskService extends AbstractService
{
// 构造方法
public function __construct()
{
parent::__construct();
$this->_d = new TaskModel();
}
/**
* 创建计划任务:查询视频、文件附件转码状态
* @author liyifei
* @param int $article_id 新闻ID
* @return bool
*/
public function createCheckAttachTask($article_id)
{
// 已有计划任务时,不再创建新的计划任务
$task = $this->get_by_conds(['article_id' => $article_id]);
if ($task) {
return true;
}
// 定时执行时间(每5分钟执行一次)
$java_cron_time = '0 0/5 * * * ?';
// UC保存计划任务
try {
$cronSdk = new Cron(Service::instance());
$callback_url = 'Frontend/Callback/CheckAttach/Index';
// 创建计划任务
$result = $cronSdk->add([
'crRemark' => sprintf('%s/%s/%s/CheckAttach', QY_DOMAIN, APP_IDENTIFIER, $article_id),
'crDescription' => '定时检查附件',
'crReqUrl' => oaUrl($callback_url, ['article_id' => $article_id]),
'crMethod' => 'GET',
'crCron' => $java_cron_time,
]);
if (!is_array($result) || !isset($result['crId'])) {
Log::record('create cron fail: ' . var_export($result, true), Log::ERR);
}
// 本地记录计划任务
$this->insert([
'article_id' => $article_id,
'cron_id' => $result['crId'],
]);
// 修改计划任务回调Url,加上计划任务ID
$cronSdk->update([
'crId' => $result['crId'],
'crReqUrl' => oaUrl($callback_url, ['article_id' => $article_id, 'cron_id' => $result['crId']]),
]);
} catch (\Exception $e) {
Log::record('create update cron fail: ' . $e->getMessage(), Log::ERR);
}
return true;
}
}