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) == 'string'){ req_data['args'] = JSON.stringify(toArrayObject(args)); } else { req_data['args'] = JSON.stringify(args); } $.post('/plugins/run', req_data, function(data) { layer.close(loadT); if (!data.status){ //错误展示10S layer.msg(data.msg,{icon:0,time:2000,shade: [10, '#000']}); return; } if(typeof(callback) == 'function'){ callback(data); } },'json'); } function phpPostCallbak(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; args['version'] = version; if (typeof(args) == 'string'){ req_data['args'] = JSON.stringify(toArrayObject(args)); } else { req_data['args'] = JSON.stringify(args); } $.post('/plugins/callback', 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 = '
\ ' + mlist + '\
\ \ \
\
' $(".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(), max_input_vars: $("input[name='max_input_vars']").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 tmp_data = $.parseJSON(ret_data.data); if(!tmp_data.status){ layer.msg(tmp_data.msg, { icon: tmp_data.status ? 1 : 2 }); return; } var rdata = tmp_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 getSessionConfig(version){ phpPost('get_session_conf', version, '', function(ret_data){ var rdata = $.parseJSON(ret_data.data); if(!rdata.status){ layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); return; } var rdata = rdata.data; var cacheList = "" + "" + "" + ""; var info = rdata.save_path.split(":"); var con = "
" + "

存储模式:

" + "

IP地址:

" + "

端口:

" + "

密码:

" + "

" + "
\ \
\
\ "; $(".soft-man-con").html(con); if (rdata.save_handler == 'files'){ $('input[name="ip"]').attr('disabled','disabled'); $('input[name="port"]').attr('disabled','disabled'); $('input[name="passwd"]').attr('placeholder','如果没有密码留空'); $('input[name="passwd"]').attr('disabled','disabled'); } // change event $("select[name='save_handler']").change(function() { var type = $(this).val(); var passwd = $('input[name="passwd"]').val(); if (passwd == ""){ $('input[name="passwd"]').attr('placeholder','如果没有密码留空'); } var ip = $('input[name="ip"]').val(); if (ip == ""){ $('input[name="ip"]').val('127.0.0.1'); } switch (type) { case 'redis': var port = $('input[name="port"]').val(); if (port == ""){ $('input[name="port"]').val('6379'); } $('input[name="ip"]').removeAttr('disabled'); $('input[name="port"]').removeAttr('disabled'); $('input[name="passwd"]').removeAttr('disabled'); break; case 'files': $('input[name="ip"]').val("").attr('disabled','disabled'); $('input[name="port"]').val("").attr('disabled','disabled'); $('input[name="passwd"]').val("").attr('disabled','disabled'); break; case 'memcache': var port = $('input[name="port"]').val(); if (port == ""){ $('input[name="port"]').val('11211'); } $('input[name="ip"]').removeAttr('disabled'); $('input[name="port"]').removeAttr('disabled'); $('input[name="passwd"]').removeAttr('disabled'); break; case 'memcached': var port = $('input[name="port"]').val(); if (port == ""){ $('input[name="port"]').val('11211'); } $('input[name="ip"]').removeAttr('disabled'); $('input[name="port"]').removeAttr('disabled'); $('input[name="passwd"]').removeAttr('disabled'); break; } }); //load session stats phpPost('get_session_count', version, '', function(ret_data){ var rdata = $.parseJSON(ret_data.data); if(!rdata.status){ layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); return; } var rdata = rdata.data; var html_var = "
清理Session文件
\
\
\
总Session文件数量"+rdata.total+"
\
可清理的Session文件数量"+rdata.oldfile+"
\
\ "; $("#session_clear").html(html_var); $('#clean_func').click(function(){ phpPost('clean_session_old', version, '', function(ret_data){ var rdata = $.parseJSON(ret_data.data); showMsg(rdata.msg,function(){ getSessionConfig(version); },{ icon: rdata.status ? 1 : 2 }); }); }); }); }); } function setSessionConfig(version){ var ip = $('input[name="ip"]').val(); var port = $('input[name="port"]').val(); var passwd = $('input[name="passwd"]').val(); var save_handler = $("select[name='save_handler']").val(); var data = { ip:ip, port:port, passwd:passwd, save_handler:save_handler, }; phpPost('set_session_conf', version, data, function(ret_data){ var rdata = $.parseJSON(ret_data.data); layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); }); } //禁用函数 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 += ''; $(".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_old(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 getPHPInfo(version) { phpPostCallbak('get_php_info', version, {}, function(data){ if (!data.status){ layer.msg(rdata.msg, { icon: 2 }); return; } layer.open({ type: 1, title: "PHP-" + version + "-PHPINFO", area: ['70%', '90%'], closeBtn: 2, shadeClose: true, content: data.data.replace('a:link {color: #009; text-decoration: none; background-color: #fff;}', '').replace('a:link {color: #000099; text-decoration: none; background-color: #ffffff;}', '') }); }) } function phpLibConfig(version){ phpPost('get_lib_conf', version, '', function(data){ var rdata = $.parseJSON(data.data); if (!rdata.status){ layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); return; } 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 = '安装' } else if (libs[i]['task'] == '0' && libs[i].phpversions.indexOf(version) != -1) { opt = '等待安装...' } else if (libs[i].status) { opt = '卸载' } else { opt = '安装' } body += '' + '' + libs[i].name + '' + '' + libs[i].type + '' + '' + libs[i].msg + '' + '' + '' + opt + '' + ''; } var con = '
' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + body + '' + '
名称类型说明状态操作
' + '
' + ''; $('.soft-man-con').html(con); }); } //安装扩展 function installPHPLib(version, name, title, pathinfo) { layer.confirm('您真的要安装{1}吗?'.replace('{1}', name), { icon: 3, closeBtn: 2 }, function() { name = name.toLowerCase(); var data = "name=" + name + "&version=" + version + "&type=1"; phpPost('install_lib', version, data, function(data){ var rdata = $.parseJSON(data.data); // layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); showMsg(rdata.msg, function(){ getTaskCount(); phpLibConfig(version); },{ icon: rdata.status ? 1 : 2 }); }); }); } //卸载扩展 function uninstallPHPLib(version, name, title, pathinfo) { layer.confirm('您真的要安装{1}吗?'.replace('{1}', name), { icon: 3, closeBtn: 2 }, function() { name = name.toLowerCase(); var data = 'name=' + name + '&version=' + version; phpPost('uninstall_lib', version, data, function(data){ var rdata = $.parseJSON(data.data); // layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); showMsg(rdata.msg, function(){ getTaskCount(); phpLibConfig(version); },{ icon: rdata.status ? 1 : 2 },5000); }); }); }