diff --git a/class/core/public.py b/class/core/public.py index 581ba2928..58583c324 100755 --- a/class/core/public.py +++ b/class/core/public.py @@ -165,8 +165,8 @@ def returnJson(status, msg, args=()): def returnMsg(status, msg, args=()): # 取通用字曲返回 - logMessage = json.loads( - readFile('static/language/' + getLanguage() + '/public.json')) + pjson = 'static/language/' + getLanguage() + '/public.json' + logMessage = json.loads(readFile(pjson)) keys = logMessage.keys() if msg in keys: diff --git a/plugins/php/index.html b/plugins/php/index.html index b6a757cc0..3a617d748 100755 --- a/plugins/php/index.html +++ b/plugins/php/index.html @@ -9,7 +9,7 @@

超时限制

配置文件

禁用函数

-

性能调整

+

性能调整

负载状况

FPM日志

慢日志

diff --git a/plugins/php/index.py b/plugins/php/index.py index 2f0054727..acf8df75f 100755 --- a/plugins/php/index.py +++ b/plugins/php/index.py @@ -333,6 +333,72 @@ def setMaxSize(version): return public.returnJson(True, '设置成功!') +def getFpmConfig(version): + + filefpm = getServerDir() + '/' + version + '/etc/php-fpm.d/www.conf' + conf = public.readFile(filefpm) + data = {} + rep = "\s*pm.max_children\s*=\s*([0-9]+)\s*" + tmp = re.search(rep, conf).groups() + data['max_children'] = tmp[0] + + rep = "\s*pm.start_servers\s*=\s*([0-9]+)\s*" + tmp = re.search(rep, conf).groups() + data['start_servers'] = tmp[0] + + rep = "\s*pm.min_spare_servers\s*=\s*([0-9]+)\s*" + tmp = re.search(rep, conf).groups() + data['min_spare_servers'] = tmp[0] + + rep = "\s*pm.max_spare_servers \s*=\s*([0-9]+)\s*" + tmp = re.search(rep, conf).groups() + data['max_spare_servers'] = tmp[0] + + rep = "\s*pm\s*=\s*(\w+)\s*" + tmp = re.search(rep, conf).groups() + data['pm'] = tmp[0] + return public.getJson(data) + + +def setFpmConfig(version): + args = getArgs() + # if not 'max' in args: + # return 'missing time args!' + + version = args['version'] + max_children = args['max_children'] + start_servers = args['start_servers'] + min_spare_servers = args['min_spare_servers'] + max_spare_servers = args['max_spare_servers'] + pm = args['pm'] + + file = getServerDir() + '/' + version + '/etc/php-fpm.d/www.conf' + conf = public.readFile(file) + + rep = "\s*pm.max_children\s*=\s*([0-9]+)\s*" + conf = re.sub(rep, "\npm.max_children = " + max_children, conf) + + rep = "\s*pm.start_servers\s*=\s*([0-9]+)\s*" + conf = re.sub(rep, "\npm.start_servers = " + start_servers, conf) + + rep = "\s*pm.min_spare_servers\s*=\s*([0-9]+)\s*" + conf = re.sub(rep, "\npm.min_spare_servers = " + + min_spare_servers, conf) + + rep = "\s*pm.max_spare_servers \s*=\s*([0-9]+)\s*" + conf = re.sub(rep, "\npm.max_spare_servers = " + + max_spare_servers + "\n", conf) + + rep = "\s*pm\s*=\s*(\w+)\s*" + conf = re.sub(rep, "\npm = " + pm + "\n", conf) + + public.writeFile(file, conf) + # public.phpReload(version) + public.writeLog("TYPE_PHP", 'PHP_CHILDREN', (version, max_children, + start_servers, min_spare_servers, max_spare_servers)) + return public.returnJson(True, '设置成功') + + if __name__ == "__main__": if len(sys.argv) < 3: @@ -368,5 +434,9 @@ if __name__ == "__main__": print setMaxTime(version) elif func == 'set_max_size': print setMaxSize(version) + elif func == 'get_fpm_conf': + print getFpmConfig(version) + elif func == 'set_fpm_conf': + print setFpmConfig(version) else: print "fail" diff --git a/plugins/php/js/php.js b/plugins/php/js/php.js index d530408c5..09761a97f 100755 --- a/plugins/php/js/php.js +++ b/plugins/php/js/php.js @@ -141,6 +141,133 @@ function setPHPMaxSize(version) { } +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 }); + }); +} + //设置PATHINFO function setPathInfo(version, type) { var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] }); @@ -317,137 +444,7 @@ function disable_functions(version, act, fs) { disFun(version); }); } -//性能调整 -function SetFpmConfig(version, action) { - if (action == 1) { - $.post('/system?action=GetMemInfo', '', function(memInfo) { - var limit_children = parseInt(memInfo['memTotal'] / 8); - 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 (limit_children < max_children) { - layer.msg('当前服务器内存不足,最大允许[' + limit_children + ']个子进程!', { icon: 2 }); - $("input[name='max_children']").focus(); - return; - } - if (max_children < max_spare_servers) { - layer.msg(lan.soft.php_fpm_err1, { icon: 2 }); - return; - } - - if (min_spare_servers > start_servers) { - layer.msg(lan.soft.php_fpm_err2, { icon: 2 }); - return; - } - - if (max_spare_servers < min_spare_servers) { - layer.msg(lan.soft.php_fpm_err3, { icon: 2 }); - return; - } - - if (max_children < start_servers) { - layer.msg(lan.soft.php_fpm_err4, { icon: 2 }); - return; - } - - if (max_children < 1 || start_servers < 1 || min_spare_servers < 1 || max_spare_servers < 1) { - layer.msg(lan.soft.php_fpm_err5, { 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; - var loadT = layer.msg(lan.public.the, { icon: 16, time: 0, shade: [0.3, '#000'] }); - $.post('/config?action=setFpmConfig', data, function(rdata) { - layer.close(loadT); - var loadT = layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 }); - }).error(function() { - layer.close(loadT); - layer.msg(lan.public.config_ok, { icon: 1 }); - }); - }); - return; - } - - $.post('/config?action=getFpmConfig', 'version=' + version, function(rdata) { - - var limitList = "" + - "" + - "" + - "" + - "" + - "" + - "" - var pms = [{ 'name': 'static', 'title': lan.bt.static }, { 'name': 'dynamic', 'title': lan.bt.dynamic }]; - var pmList = ''; - for (var i = 0; i < pms.length; i++) { - pmList += ''; - } - var body = "
" + - "

" + lan.soft.concurrency_type + ":

" + - "

" + lan.soft.php_fpm_model + ":*" + lan.soft.php_fpm_ps1 + "

" + - "

max_children:*" + lan.soft.php_fpm_ps2 + "

" + - "

start_servers: *" + lan.soft.php_fpm_ps3 + "

" + - "

min_spare_servers: *" + lan.soft.php_fpm_ps4 + "

" + - "

max_spare_servers: *" + lan.soft.php_fpm_ps5 + "

" + - "
" + - "
" - - $(".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); - }); - }); -} //phpinfo function BtPhpinfo(version) { @@ -495,24 +492,22 @@ function GetPHPStatus(version) { } - - -function GetPHPStatus(a) { - if(a == "52") { - layer.msg(lan.bt.php_status_err, { - icon: 2 - }); - return - } - $.post("/ajax?action=GetPHPStatus", "version=" + a, function(b) { - layer.open({ - type: 1, - area: "400", - title: lan.bt.php_status_title, - closeBtn: 2, - shift: 5, - shadeClose: true, - content: "
"+lan.bt.php_pool+"" + b.pool + "
"+lan.bt.php_manager+"" + ((b["process manager"] == "dynamic") ? lan.bt.dynamic : lan.bt.static) + "
"+lan.bt.php_start+"" + b["start time"] + "
"+lan.bt.php_accepted+"" + b["accepted conn"] + "
"+lan.bt.php_queue+"" + b["listen queue"] + "
"+lan.bt.php_max_queue+"" + b["max listen queue"] + "
"+lan.bt.php_len_queue+"" + b["listen queue len"] + "
"+lan.bt.php_idle+"" + b["idle processes"] + "
"+lan.bt.php_active+"" + b["active processes"] + "
"+lan.bt.php_total+"" + b["total processes"] + "
"+lan.bt.php_max_active+"" + b["max active processes"] + "
"+lan.bt.php_max_children+"" + b["max children reached"] + "
"+lan.bt.php_slow+"" + b["slow requests"] + "
" - }) - }) -} \ No newline at end of file +// function GetPHPStatus(a) { +// if(a == "52") { +// layer.msg(lan.bt.php_status_err, { +// icon: 2 +// }); +// return +// } +// $.post("/ajax?action=GetPHPStatus", "version=" + a, function(b) { +// layer.open({ +// type: 1, +// area: "400", +// title: lan.bt.php_status_title, +// closeBtn: 2, +// shift: 5, +// shadeClose: true, +// content: "
"+lan.bt.php_pool+"" + b.pool + "
"+lan.bt.php_manager+"" + ((b["process manager"] == "dynamic") ? lan.bt.dynamic : lan.bt.static) + "
"+lan.bt.php_start+"" + b["start time"] + "
"+lan.bt.php_accepted+"" + b["accepted conn"] + "
"+lan.bt.php_queue+"" + b["listen queue"] + "
"+lan.bt.php_max_queue+"" + b["max listen queue"] + "
"+lan.bt.php_len_queue+"" + b["listen queue len"] + "
"+lan.bt.php_idle+"" + b["idle processes"] + "
"+lan.bt.php_active+"" + b["active processes"] + "
"+lan.bt.php_total+"" + b["total processes"] + "
"+lan.bt.php_max_active+"" + b["max active processes"] + "
"+lan.bt.php_max_children+"" + b["max children reached"] + "
"+lan.bt.php_slow+"" + b["slow requests"] + "
" +// }) +// }) +// } \ No newline at end of file