194 lines
6.5 KiB
HTML
194 lines
6.5 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
|
||
<head>
|
||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
|
||
<link href="/jscss/style.css" rel="stylesheet" type="text/css" />
|
||
<script type="text/javascript" charset="utf-8" src="/jscss/theme.js"></script>
|
||
</head>
|
||
|
||
<body>
|
||
<div class="container">
|
||
<form class="search" onsubmit="table.search(this,'btn');return false;">
|
||
<ul></ul>
|
||
<div>
|
||
<div class="sinps"></div>
|
||
<div class="sbtns">
|
||
<button class="lang btn" type="submit">查询</button>
|
||
<a class="lang btn def" onclick="pagehelp()">帮助</a>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
<div class='table'>
|
||
<div class="loading">Loading...</div>
|
||
<div class="list"></div>
|
||
<div>
|
||
<div class="btmbtn">
|
||
<a class="lang btn def" onclick="ciyfn.select_all(table)">全选</a>
|
||
<a class="lang btn def" onclick="ciyfn.select_diff(table)">反选</a>
|
||
|
|
||
<a class="lang btn dag" onclick="ciyfn.select_callfunc(table, this,'del','已选{n}条,确认是否删除?',{},function(json){table.delline(json)})">批量删除</a>
|
||
</div>
|
||
<div class="page"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="alert_pagehelp" style="display:none;">
|
||
<b>设置技巧</b>
|
||
<div style="margin: 0 0 1em 1em;">
|
||
入口函数,请尽量设置不同的函数名,防止同时引用冲突。<br />
|
||
可以通过手动执行调试任务代码,建议用<code>clog()</code>打印变量。<br />
|
||
</div>
|
||
<b>耗时任务</b>
|
||
<div style="margin: 0 0 1em 1em;">
|
||
每天/每周/每月等大周期耗时任务,请尽量岔开时间。<br />
|
||
每分钟的耗时任务,请优化架构防止分钟耗时,或单独跑进程。<br />
|
||
</div>
|
||
<b>PHP版本额外配置</b>
|
||
<div style="margin: 0 0 1em 1em;">
|
||
配置Linux crond。<br />
|
||
在<kbd>/var/spool/cron/root</kbd>文件中增加一行:(不要使用curl)<br />
|
||
* * * * * wget -O mm.php -q http://xxxx/ajax/admin/autotask/task.run<br />
|
||
<code>或</code><br />
|
||
* * * * * /usr/bin/php /data/ciyxxx/web/admin/autotask/run.php<br />
|
||
<br />
|
||
nginx+fpm模式,请注意设置fpm的request_terminate_timeout参数,防止运行超时。<br />
|
||
</div>
|
||
</div>
|
||
|
||
<script type="text/javascript" src="/jscss/ciy.js"></script>
|
||
<script type="text/javascript" src="/jscss/ciycmp.js"></script>
|
||
<script type="text/javascript" src="/jscss/ciycmp2.js"></script>
|
||
<script type="text/javascript" src="/jscss/ciytable.js"></script>
|
||
<script type="text/javascript" src="../common.js"></script>
|
||
<script type="text/javascript">
|
||
'use strict';
|
||
var table;
|
||
ciyfn.pageload(function () {
|
||
$5(document).on('keydown', function (e) {
|
||
if (e.ctrlKey && e.keyCode == 83) {//Ctrl+S
|
||
e.preventDefault();
|
||
var upbtns = $5('.upbtn:not(.def)');
|
||
upbtns.each(function (dom) {
|
||
menubtn(dom, 'edit');
|
||
}, 0.5);
|
||
}
|
||
});
|
||
table = new ciyclass.table({
|
||
dom: '.table'
|
||
, url: 'init'
|
||
, pagecount: 10
|
||
, fn_beforedata: function (json) {
|
||
json.list = ciyfn.conv_treerow(json.list, 0, 0);
|
||
ciyfn.fillsearch({
|
||
searchdom: '.search'
|
||
, data: json
|
||
, liall: '全部'
|
||
, lidata: 'autotaskstatus'
|
||
, liclick: function (dom) {
|
||
table.search(dom, 'li');
|
||
}
|
||
});
|
||
return json;
|
||
}
|
||
, fn_tdcontent: function (key, datashow, field, data) {
|
||
if (key == 'autotaskstatus') {
|
||
if (data['runtimes'] > 0)
|
||
datashow = datashow.replace('<span ', '<span title="执行开始时间: ' + ciyfn.todatetime(data['runtimes'], 'Y-m-d H:i:s') + '"');
|
||
return datashow;
|
||
}
|
||
if (key == 'name' || key == 'runfunc' || key == 'runparam' || key == 'nexttimes') {
|
||
return '<input style="width:100%;" onkeydown="btnset(this)" type="text" name="' + key + '" value="' + datashow + '"/>';
|
||
}
|
||
if (key == 'runcycle') {
|
||
var dat = parseInt(data[key]);
|
||
var unit = '';
|
||
if (dat < 0) {
|
||
dat = -dat;
|
||
unit = 'month';
|
||
} else {
|
||
if (dat % 86400 > 0) {
|
||
unit = 'sec';
|
||
} else {
|
||
dat = parseInt(dat / 86400);
|
||
unit = 'day';
|
||
}
|
||
}
|
||
return '<ciy-inputcyc com="runcycle" value="' + data[key] + '" />';
|
||
}
|
||
if (key == '_btn') {
|
||
var html = '<a class="lang btn def upbtn" onclick="menubtn(this, \'edit\')">' + (data['id'] == 0 ? '新增' : '更新') + '</a>';
|
||
if (data['id'] > 0) {
|
||
if (data['autotaskstatus'] < 90) {
|
||
html += '<a class="lang btn dag" onclick="menubtn(this, \'status9\')">禁止</a>';
|
||
} else {
|
||
html += '<a class="lang btn warn" onclick="menubtn(this, \'status2\')">恢复</a>';
|
||
}
|
||
html += '<a class="lang btn" onclick="menubtn(this, \'autotskrun\')">执行记录</a>';
|
||
html += '<a class="lang btn" onclick="menubtn(this, \'runtask\')">手动执行</a>';
|
||
}
|
||
return html;
|
||
}
|
||
}
|
||
, fn_done: function () {
|
||
var doms = $5('[com=runcycle]');
|
||
for (var i = 0; i < doms.length; i++) {
|
||
ciycmp({ dom: doms[i] });
|
||
}
|
||
}
|
||
});
|
||
table.callpage(1);
|
||
});
|
||
function btnset(dom) {
|
||
var domtr = $5(dom).parent('tr');
|
||
$5('.btn.upbtn', domtr).removeClass('def');
|
||
}
|
||
function pagehelp() {
|
||
ciyfn.alert({
|
||
title: '页面帮助'
|
||
, width: 'pc'
|
||
, content: document.getElementById("alert_pagehelp").innerHTML
|
||
});
|
||
}
|
||
function menubtn(dom, btn) {
|
||
var trdom = $5(dom).parent('tr');
|
||
var id = trdom.attr('data-id');
|
||
var postparam = ciyfn.getform(dom, 'TR');
|
||
postparam.id = id;
|
||
if (btn == 'edit') {
|
||
ciyfn.callfastfunc(dom, '', 'update', postparam, function (json) {
|
||
$5(dom).addClass('def');
|
||
if (id == 0) {
|
||
$5('input', trdom).val('');
|
||
table.updateline(json);
|
||
}
|
||
});
|
||
}
|
||
if (btn == 'status9') {
|
||
postparam.status = 90;
|
||
ciyfn.callfastfunc(dom, '确认禁止任务执行?', 'status', postparam, function (json) {
|
||
table.updateline(json);
|
||
});
|
||
}
|
||
if (btn == 'status2') {
|
||
postparam.status = 20;
|
||
ciyfn.callfastfunc(dom, '确认恢复任务执行?', 'status', postparam, function (json) {
|
||
table.updateline(json);
|
||
});
|
||
}
|
||
if (btn == 'autotskrun') {
|
||
ciyfn.sendsignal(window.top, 'manage_ifropen', {
|
||
url: 'rigger/autotskrun.html?_autotaskid=' + id
|
||
, name: '任务<code>' + table.data[id].name + '</code>'
|
||
});
|
||
}
|
||
if (btn == 'runtask') {
|
||
window.open('/z/?func=admin/autotask/task.main&runid=' + id + '&_ciyauth=' + ciyfn.getstorage('_' + ciy_vars.tokenfield));
|
||
}
|
||
}
|
||
</script>
|
||
</body>
|
||
|
||
</html> |