function phpPost(method, version, args,callback){
var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 });
var req_data = {};
req_data['name'] = 'php';
req_data['func'] = method;
req_data['version'] = version;
if (typeof(args) != 'undefined' && args!=''){
req_data['args'] = JSON.stringify(args);
}
$.post('/plugins/run', req_data, function(data) {
layer.close(loadT);
if (!data.status){
layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']});
return;
}
if(typeof(callback) == 'function'){
callback(data);
}
},'json');
}
//配置修改
function phpSetConfig(version) {
phpPost('get_php_conf', version,'',function(data){
// console.log(data);
var rdata = $.parseJSON(data.data);
// console.log(rdata);
var mlist = '';
for (var i = 0; i < rdata.length; i++) {
var w = '70'
if (rdata[i].name == 'error_reporting') w = '250';
var ibody = '';
switch (rdata[i].type) {
case 0:
var selected_1 = (rdata[i].value == 1) ? 'selected' : '';
var selected_0 = (rdata[i].value == 0) ? 'selected' : '';
ibody = ''
break;
case 1:
var selected_1 = (rdata[i].value == 'On') ? 'selected' : '';
var selected_0 = (rdata[i].value == 'Off') ? 'selected' : '';
ibody = ''
break;
}
mlist += '
' + rdata[i].name + '' + ibody + ', ' + rdata[i].ps + '
'
}
var phpCon = ''
$(".soft-man-con").html(phpCon);
});
}
//提交PHP配置
function submitConf(version) {
var data = {
version: version,
display_errors: $("select[name='display_errors']").val(),
'cgi.fix_pathinfo': $("select[name='cgi.fix_pathinfo']").val(),
'date.timezone': $("input[name='date.timezone']").val(),
short_open_tag: $("select[name='short_open_tag']").val(),
asp_tags: $("select[name='asp_tags']").val() || 'On',
safe_mode: $("select[name='safe_mode']").val(),
max_execution_time: $("input[name='max_execution_time']").val(),
max_input_time: $("input[name='max_input_time']").val(),
memory_limit: $("input[name='memory_limit']").val(),
post_max_size: $("input[name='post_max_size']").val(),
file_uploads: $("select[name='file_uploads']").val(),
upload_max_filesize: $("input[name='upload_max_filesize']").val(),
max_file_uploads: $("input[name='max_file_uploads']").val(),
default_socket_timeout: $("input[name='default_socket_timeout']").val(),
error_reporting: $("input[name='error_reporting']").val() || 'On'
};
phpPost('submit_php_conf', version, data, function(ret_data){
var rdata = $.parseJSON(ret_data.data);
// console.log(rdata);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
}
//php上传限制
function phpUploadLimitReq(version){
phpPost('get_limit_conf', version, '', function(ret_data){
var rdata = $.parseJSON(ret_data.data);
phpUploadLimit(version,rdata['max']);
});
}
function phpUploadLimit(version,max){
var LimitCon = 'MB
';
$(".soft-man-con").html(LimitCon);
}
//php超时限制
function phpTimeLimitReq(version){
phpPost('get_limit_conf', version, '', function(ret_data){
var rdata = $.parseJSON(ret_data.data);
phpTimeLimit(version,rdata['maxTime']);
});
}
function phpTimeLimit(version, max) {
var LimitCon = '秒
';
$(".soft-man-con").html(LimitCon);
}
//设置超时限制
function setPHPMaxTime(version) {
var max = $(".phpTimeLimit").val();
phpPost('set_max_time',version,{'time':max},function(data){
var rdata = $.parseJSON(data.data);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
}
//设置PHP上传限制
function setPHPMaxSize(version) {
max = $(".phpUploadLimit").val();
if (max < 2) {
alert(max);
layer.msg('上传大小限制不能小于2M', { icon: 2 });
return;
}
phpPost('set_max_size',version,{'max':max},function(data){
var rdata = $.parseJSON(data.data);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
}
function getFpmConfig(version){
phpPost('get_fpm_conf', version, {}, function(data){
// console.log(data);
var rdata = $.parseJSON(data.data);
// console.log(rdata);
var limitList = "" +
"" +
"" +
"" +
"" +
"" +
""
var pms = [{ 'name': 'static', 'title': '静态' }, { 'name': 'dynamic', 'title': '动态' }];
var pmList = '';
for (var i = 0; i < pms.length; i++) {
pmList += '';
}
var body = "" +
"
并发方案:
" +
"
运行模式:*PHP-FPM运行模式
" +
"
max_children:*允许创建的最大子进程数
" +
"
start_servers: *起始进程数(服务启动后初始进程数量)
" +
"
min_spare_servers: *最小空闲进程数(清理空闲进程后的保留数量)
" +
"
max_spare_servers: *最大空闲进程数(当空闲进程达到此值时清理)
" +
"
" +
"
";
$(".soft-man-con").html(body);
$("select[name='limit']").change(function() {
var type = $(this).val();
var max_children = rdata.max_children;
var start_servers = rdata.start_servers;
var min_spare_servers = rdata.min_spare_servers;
var max_spare_servers = rdata.max_spare_servers;
switch (type) {
case '1':
max_children = 30;
start_servers = 5;
min_spare_servers = 5;
max_spare_servers = 20;
break;
case '2':
max_children = 50;
start_servers = 15;
min_spare_servers = 15;
max_spare_servers = 35;
break;
case '3':
max_children = 100;
start_servers = 20;
min_spare_servers = 20;
max_spare_servers = 70;
break;
case '4':
max_children = 200;
start_servers = 25;
min_spare_servers = 25;
max_spare_servers = 150;
break;
case '5':
max_children = 300;
start_servers = 30;
min_spare_servers = 30;
max_spare_servers = 180;
break;
case '6':
max_children = 500;
start_servers = 35;
min_spare_servers = 35;
max_spare_servers = 250;
break;
}
$("input[name='max_children']").val(max_children);
$("input[name='start_servers']").val(start_servers);
$("input[name='min_spare_servers']").val(min_spare_servers);
$("input[name='max_spare_servers']").val(max_spare_servers);
});
});
}
function setFpmConfig(version){
var max_children = Number($("input[name='max_children']").val());
var start_servers = Number($("input[name='start_servers']").val());
var min_spare_servers = Number($("input[name='min_spare_servers']").val());
var max_spare_servers = Number($("input[name='max_spare_servers']").val());
var pm = $("select[name='pm']").val();
if (max_children < max_spare_servers) {
layer.msg('max_spare_servers 不能大于 max_children', { icon: 2 });
return;
}
if (min_spare_servers > start_servers) {
layer.msg('min_spare_servers 不能大于 start_servers', { icon: 2 });
return;
}
if (max_spare_servers < min_spare_servers) {
layer.msg('min_spare_servers 不能大于 max_spare_servers', { icon: 2 });
return;
}
if (max_children < start_servers) {
layer.msg('start_servers 不能大于 max_children', { icon: 2 });
return;
}
if (max_children < 1 || start_servers < 1 || min_spare_servers < 1 || max_spare_servers < 1) {
layer.msg('配置值不能小于1', { icon: 2 });
return;
}
var data = {
version:version,
max_children:max_children,
start_servers:start_servers,
min_spare_servers:min_spare_servers,
max_spare_servers:max_spare_servers,
pm:pm,
};
phpPost('set_fpm_conf', version, data, function(ret_data){
var rdata = $.parseJSON(ret_data.data);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
}
function getFpmStatus(version){
phpPost('get_fpm_status', version, '', function(ret_data){
var rdata = $.parseJSON(ret_data.data);
var con = "\
应用池(pool) | " + rdata.pool + " |
\
进程管理方式(process manager) | " + ((rdata['process manager'] == 'dynamic') ? '动态' : '静态') + " |
\
启动日期(start time) | " + rdata['start time'] + " |
\
请求数(accepted conn) | " + rdata['accepted conn'] + " |
\
请求队列(listen queue) | " + rdata['listen queue'] + " |
\
最大等待队列(max listen queue) | " + rdata['max listen queue'] + " |
\
socket队列长度(listen queue len) | " + rdata['listen queue len'] + " |
\
空闲进程数量(idle processes) | " + rdata['idle processes'] + " |
\
活跃进程数量(active processes) | " + rdata['active processes'] + " |
\
总进程数量(total processes) | " + rdata['total processes'] + " |
\
最大活跃进程数量(max active processes) | " + rdata['max active processes'] + " |
\
到达进程上限次数(max children reached) | " + rdata['max children reached'] + " |
\
慢请求数量(slow requests) | " + rdata['slow requests'] + " |
\
";
$(".soft-man-con").html(con);
$(".GetPHPStatus td,.GetPHPStatus th").css("padding", "7px");
});
}
//禁用函数
function disableFunc(version) {
phpPost('get_disable_func', version,'',function(data){
var rdata = $.parseJSON(data.data);
var disable_functions = rdata.disable_functions.split(',');
var dbody = ''
for (var i = 0; i < disable_functions.length; i++) {
if (disable_functions[i] == '') continue;
dbody += "" + disable_functions[i] + " | 删除 |
";
}
var con = "" +
"" +
"" +
"
" +
"" +
"名称 | 操作 |
" +
"" + dbody + "" +
"
";
con += '\
\
- 在此处可以禁用指定函数的调用,以增强环境安全性!
\
- 强烈建议禁用如exec,system等危险函数!
\
';
$(".soft-man-con").html(con);
});
}
//设置禁用函数
function setDisableFunc(version, act, fs) {
var fsArr = fs.split(',');
if (act == 1) {
var functions = $("#disable_function_val").val();
for (var i = 0; i < fsArr.length; i++) {
if (functions == fsArr[i]) {
layer.msg(lan.soft.fun_msg, { icon: 5 });
return;
}
}
fs += ',' + functions;
msg = '添加成功';
} else {
fs = '';
for (var i = 0; i < fsArr.length; i++) {
if (act == fsArr[i]) continue;
fs += fsArr[i] + ','
}
msg = '删除成功';
fs = fs.substr(0, fs.length - 1);
}
var data = {
'version':version,
'disable_functions':fs,
};
phpPost('set_disable_func', version,data,function(data){
var rdata = $.parseJSON(data.data);
showMsg(rdata.status ? msg : rdata.msg, function(){
disableFunc(version);
} ,{ icon: rdata.status ? 1 : 2 });
});
}
//phpinfo
function getPhpinfo(version) {
var con = '';
$(".soft-man-con").html(con);
}
//获取PHPInfo
function getPHPInfo(version) {
phpPost('get_phpinfo', version, '', function(data){
var rdata = data.data;
layer.open({
type: 1,
title: "PHP-" + version + "-PHPINFO",
area: ['90%', '90%'],
closeBtn: 2,
shadeClose: true,
content: rdata
});
});
}
function phpLibConfig(version){
phpPost('get_lib_conf', version, '', function(data){
console.log(data);
var rdata = $.parseJSON(data.data);
console.log(rdata.data);
var libs = rdata.data;
var body = ""
var opt = ""
for (var i = 0; i < libs.length; i++) {
if (libs[i].versions.indexOf(version) == -1) continue;
if (libs[i]['task'] == '-1' && libs[i].phpversions.indexOf(version) != -1) {
opt = '' + lan.soft.the_install + ''
} else if (libs[i]['task'] == '0' && libs[i].phpversions.indexOf(version) != -1) {
opt = '' + lan.soft.sleep_install + ''
} else if (libs[i].status) {
opt = '' + lan.soft.uninstall + ''
} else {
opt = '' + lan.soft.install + ''
}
body += '' +
'' + libs[i].name + ' | ' +
'' + libs[i].type + ' | ' +
'' + libs[i].msg + ' | ' +
' | ' +
'' + opt + ' | ' +
'
';
}
var con = '' +
'
' +
'' +
'' +
'' + lan.soft.php_ext_name + ' | ' +
'' + lan.soft.php_ext_type + ' | ' +
'' + lan.soft.php_ext_ps + ' | ' +
'' + lan.soft.php_ext_status + ' | ' +
'' + lan.public.action + ' | ' +
'
' +
'' +
'' + body + '' +
'
' +
'
' +
'- 请按实际需求安装扩展,不要安装不必要的PHP扩展,这会影响PHP执行效率,甚至出现异常
- Redis扩展只允许在1个PHP版本中使用,安装到其它PHP版本请在[软件管理]重装Redis
- opcache/xcache/apc等脚本缓存扩展,请只安装其中1个,否则可能导致您的站点程序异常
';
$('.soft-man-con').html(con);
});
}
//设置PATHINFO
// function setPathInfo(version, type) {
// var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
// $.post('/config?action=setPathInfo', 'version=' + version + '&type=' + type, function(rdata) {
// var pathinfo = (type == 'on') ? true : false;
// var pathinfoOpt = '' + lan.public.off + ''
// if (!pathinfo) {
// pathinfoOpt = '' + lan.public.on + ''
// }
// var pathinfo1 = 'PATH_INFO | ' + lan.soft.php_menu_ext + ' | ' + lan.soft.mvc_ps + ' | | ' + pathinfoOpt + ' | ';
// $("#pathInfo").html(pathinfo1);
// $(".bt-w-menu .bgw").attr('onclick', "SetPHPConfig('" + version + "'," + pathinfo + ",1)");
// $(".bt-w-menu .bgw a").attr('href', "javascript:SetPHPConfig('" + version + "'," + pathinfo + ",1);");
// layer.msg(rdata.msg, { icon: 1 });
// });
// }
//PHP扩展配置
function setPHPConfig(version, pathinfo, go) {
$.get('/ajax?action=GetPHPConfig&version=' + version, function(rdata) {
var body = ""
var opt = ""
for (var i = 0; i < rdata.libs.length; i++) {
if (rdata.libs[i].versions.indexOf(version) == -1) continue;
if (rdata.libs[i]['task'] == '-1' && rdata.libs[i].phpversions.indexOf(version) != -1) {
opt = '' + lan.soft.the_install + ''
} else if (rdata.libs[i]['task'] == '0' && rdata.libs[i].phpversions.indexOf(version) != -1) {
opt = '' + lan.soft.sleep_install + ''
} else if (rdata.libs[i].status) {
opt = '' + lan.soft.uninstall + ''
} else {
opt = '' + lan.soft.install + ''
}
body += '' +
'' + rdata.libs[i].name + ' | ' +
'' + rdata.libs[i].type + ' | ' +
'' + rdata.libs[i].msg + ' | ' +
' | ' +
'' + opt + ' | ' +
'
'
}
var pathinfoOpt = '' + lan.soft.off + ''
if (!rdata.pathinfo) {
pathinfoOpt = '' + lan.soft.on + ''
}
var pathinfo1 = 'PATH_INFO | ' + lan.soft.php_menu_ext + ' | ' + lan.soft.mvc_ps + ' | | ' + pathinfoOpt + ' |
';
var con = '' +
'
' +
'' +
'' +
'' + lan.soft.php_ext_name + ' | ' +
'' + lan.soft.php_ext_type + ' | ' +
'' + lan.soft.php_ext_ps + ' | ' +
'' + lan.soft.php_ext_status + ' | ' +
'' + lan.public.action + ' | ' +
'
' +
'' +
'' + pathinfo1 + body + '' +
'
' +
'
' +
'- 请按实际需求安装扩展,不要安装不必要的PHP扩展,这会影响PHP执行效率,甚至出现异常
- Redis扩展只允许在1个PHP版本中使用,安装到其它PHP版本请在[软件管理]重装Redis
- opcache/xcache/apc等脚本缓存扩展,请只安装其中1个,否则可能导致您的站点程序异常
';
var divObj = document.getElementById('phpextdiv');
var scrollTopNum = 0;
if (divObj) scrollTopNum = divObj.scrollTop;
$(".soft-man-con").html(con);
document.getElementById('phpextdiv').scrollTop = scrollTopNum;
});
if (go == undefined) {
setTimeout(function() {
if ($(".bgw #phpext").html() != '安装扩展') {
return;
}
SetPHPConfig(version, pathinfo);
}, 3000);
}
}
//安装扩展
function InstallPHPLib(version, name, title, pathinfo) {
layer.confirm(lan.soft.php_ext_install_confirm.replace('{1}', name), { icon: 3, closeBtn: 2 }, function() {
name = name.toLowerCase();
var data = "name=" + name + "&version=" + version + "&type=1";
var loadT = layer.msg(lan.soft.add_install, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/files?action=InstallSoft', data, function(rdata) {
setTimeout(function() {
layer.close(loadT);
SetPHPConfig(version, pathinfo, true);
setTimeout(function() {
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
}, 1000);
}, 1000);
});
fly("bi-btn");
InstallTips();
GetTaskCount();
});
}
//卸载扩展
function UninstallPHPLib(version, name, title, pathinfo) {
layer.confirm(lan.soft.php_ext_uninstall_confirm.replace('{1}', name), { icon: 3, closeBtn: 2 }, function() {
name = name.toLowerCase();
var data = 'name=' + name + '&version=' + version;
var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] });
$.post('/files?action=UninstallSoft', data, function(rdata) {
layer.close(loadT);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
SetPHPConfig(version, pathinfo, true);
});
});
}