154 lines
4.5 KiB
PHP
154 lines
4.5 KiB
PHP
<?php namespace Phpcmf\Control\Admin;
|
|
/**
|
|
* https://www.besyun.com
|
|
* BESCMS
|
|
* 本文件是框架系统文件,二次开发时不可以修改本文件
|
|
**/
|
|
|
|
// 任务队列
|
|
class Cron extends \Phpcmf\Table
|
|
{
|
|
|
|
private $type;
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
\Phpcmf\Service::V()->assign([
|
|
'menu' => \Phpcmf\Service::M('auth')->_admin_menu(
|
|
[
|
|
'任务管理' => [\Phpcmf\Service::L('Router')->class.'/index', 'fa fa-indent'],
|
|
'任务设置' => ['add:'.\Phpcmf\Service::L('Router')->class.'/edit', 'fa fa-cog'],
|
|
'help' => [353],
|
|
]
|
|
)
|
|
]);
|
|
// 表单显示名称
|
|
$this->name = dr_lang('任务队列');
|
|
$this->is_data = 0;
|
|
// 初始化数据表
|
|
$this->_init([
|
|
'table' => 'cron',
|
|
'field' => [
|
|
'type' => [
|
|
'ismain' => 1,
|
|
'fieldtype' => 'Text',
|
|
'fieldname' => 'type',
|
|
],
|
|
],
|
|
'date_field' => 'inputtime',
|
|
'order_by' => 'id desc,status asc',
|
|
]);
|
|
// 任务类别
|
|
$this->type = [
|
|
'email' => dr_lang('邮件发送'),
|
|
'notice' => dr_lang('消息通知'),
|
|
];
|
|
}
|
|
|
|
// 任务管理
|
|
public function index() {
|
|
|
|
list($tpl, $data) = $this->_List();
|
|
if ($data['list']) {
|
|
foreach ($data['list'] as $i => $t) {
|
|
$data['list'][$i]['value'] = ('<pre>'.str_replace([PHP_EOL, "'", '"'], ["<br>", "", ""], var_export(dr_string2array($t['value']), true)).'</pre>');
|
|
$t['error'] && $data['list'][$i]['error'] = ('<pre>'.str_replace([PHP_EOL, "'", '"'], ["<br>", "", ""], var_export(dr_string2array($t['error']), true)).'</pre>');
|
|
}
|
|
}
|
|
|
|
$run_time = '';
|
|
if (is_file(WRITEPATH.'config/run_time.php')) {
|
|
$run_time = file_get_contents(WRITEPATH.'config/run_time.php');
|
|
}
|
|
|
|
\Phpcmf\Service::V()->assign([
|
|
'type' => $this->type,
|
|
'list' => $data['list'],
|
|
'run_time' => $run_time,
|
|
]);
|
|
\Phpcmf\Service::V()->display($tpl);
|
|
}
|
|
|
|
public function edit() {
|
|
|
|
if (is_file(WRITEPATH.'config/system.php')) {
|
|
$data = require WRITEPATH.'config/system.php';
|
|
} else {
|
|
$data = [];
|
|
}
|
|
|
|
if (IS_POST) {
|
|
$post = \Phpcmf\Service::L('input')->post('data', true);
|
|
\Phpcmf\Service::M('System')->save_config($data, [
|
|
'SYS_CRON_AUTH' => dr_safe_replace($post['SYS_CRON_AUTH'] ?? ''),
|
|
]);
|
|
\Phpcmf\Service::L('input')->system_log('设置自动任务权限');
|
|
$this->_json(1, dr_lang('操作成功'));
|
|
}
|
|
|
|
\Phpcmf\Service::V()->assign([
|
|
'data' => $data,
|
|
'form' => dr_form_hidden(),
|
|
]);
|
|
\Phpcmf\Service::V()->display('cron_edit.html');
|
|
}
|
|
|
|
public function show() {
|
|
|
|
list($tpl, $data) = $this->_Show(\Phpcmf\Service::L('input')->get('id'));
|
|
|
|
\Phpcmf\Service::V()->assign([
|
|
'show_error' => var_export(dr_string2array($data['error']), true),
|
|
'show_value' => var_export(dr_string2array($data['value']), true),
|
|
]);
|
|
\Phpcmf\Service::V()->display($tpl);exit;
|
|
}
|
|
|
|
// 后台删除任务
|
|
public function del() {
|
|
$this->_Del(
|
|
\Phpcmf\Service::L('input')->get_post_ids(),
|
|
null,
|
|
null,
|
|
\Phpcmf\Service::M()->dbprefix($this->init['table'])
|
|
);
|
|
}
|
|
|
|
|
|
// 执行任务
|
|
public function post_add() {
|
|
|
|
$ids = \Phpcmf\Service::L('input')->get_post_ids();
|
|
if ($ids) {
|
|
foreach ($ids as $id) {
|
|
\Phpcmf\Service::M('cron')->do_cron_id($id);
|
|
//\Phpcmf\Service::L('thread')->cron(['action' => 'cron', 'id' => $id ], 1);
|
|
}
|
|
$this->_json(1, dr_lang('任务已提交,等待执行结果'));
|
|
} else {
|
|
$this->_json(0, dr_lang('所选数据不存在'));
|
|
}
|
|
}
|
|
|
|
// 单个执行任务
|
|
public function do_add() {
|
|
|
|
$id = (int)\Phpcmf\Service::L('input')->get('id');
|
|
if (!$id) {
|
|
$this->_json(0, dr_lang('所选数据不存在'));
|
|
}
|
|
|
|
$rt = \Phpcmf\Service::M('cron')->do_cron_id($id);
|
|
if (!$rt['code']) {
|
|
$this->_json(0, $rt['msg']);
|
|
}
|
|
|
|
$this->_json(1, dr_lang('任务执行完成'));
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|