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