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'] = ('
'.str_replace([PHP_EOL, "'", '"'], ["
", "", ""], var_export(dr_string2array($t['value']), true)).'
'); $t['error'] && $data['list'][$i]['error'] = ('
'.str_replace([PHP_EOL, "'", '"'], ["
", "", ""], var_export(dr_string2array($t['error']), true)).'
'); } } $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('任务执行完成')); } }