Skip to content

Commit dd7ce47

Browse files
committed
- Implemented FS#1888 and FS#2211.
1 parent 76ebcb3 commit dd7ce47

File tree

10 files changed

+109
-7
lines changed

10 files changed

+109
-7
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ALTER TABLE `web_domain` ADD `pm` ENUM( 'static', 'dynamic', 'ondemand' ) NOT NULL DEFAULT 'dynamic' AFTER `php_fpm_use_socket`;
2+
ALTER TABLE `web_domain` ADD `pm_process_idle_timeout` INT NOT NULL DEFAULT '10' AFTER `pm_max_spare_servers` , ADD `pm_max_requests` INT NOT NULL DEFAULT '0' AFTER `pm_process_idle_timeout`;

install/sql/ispconfig3.sql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1564,10 +1564,13 @@ CREATE TABLE `web_domain` (
15641564
`apache_directives` mediumtext,
15651565
`nginx_directives` mediumtext,
15661566
`php_fpm_use_socket` ENUM('n','y') NOT NULL DEFAULT 'n',
1567+
`pm` enum('static','dynamic','ondemand') NOT NULL DEFAULT 'dynamic',
15671568
`pm_max_children` int(11) NOT NULL DEFAULT '10',
15681569
`pm_start_servers` int(11) NOT NULL DEFAULT '2',
15691570
`pm_min_spare_servers` int(11) NOT NULL DEFAULT '1',
15701571
`pm_max_spare_servers` int(11) NOT NULL DEFAULT '5',
1572+
`pm_process_idle_timeout` int(11) NOT NULL DEFAULT '10',
1573+
`pm_max_requests` int(11) NOT NULL DEFAULT '0',
15711574
`php_open_basedir` mediumtext,
15721575
`custom_php_ini` mediumtext,
15731576
`backup_interval` VARCHAR( 255 ) NOT NULL DEFAULT 'none',

interface/web/sites/form/web_domain.tform.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,12 @@
542542
'default' => 'n',
543543
'value' => array(0 => 'n',1 => 'y')
544544
),
545+
'pm' => array (
546+
'datatype' => 'VARCHAR',
547+
'formtype' => 'SELECT',
548+
'default' => 'dynamic',
549+
'value' => array('static' => 'static', 'dynamic' => 'dynamic', 'ondemand' => 'ondemand (PHP Version >= 5.3.9)')
550+
),
545551
'pm_max_children' => array (
546552
'datatype' => 'INTEGER',
547553
'formtype' => 'TEXT',
@@ -590,6 +596,30 @@
590596
'width' => '3',
591597
'maxlength' => '3'
592598
),
599+
'pm_process_idle_timeout' => array (
600+
'datatype' => 'INTEGER',
601+
'formtype' => 'TEXT',
602+
'validators' => array ( 0 => array ( 'type' => 'REGEX',
603+
'regex' => '/^([1-9][0-9]{0,10})$/',
604+
'errmsg'=> 'pm_process_idle_timeout_error_regex'),
605+
),
606+
'default' => '10',
607+
'value' => '',
608+
'width' => '3',
609+
'maxlength' => '6'
610+
),
611+
'pm_max_requests' => array (
612+
'datatype' => 'INTEGER',
613+
'formtype' => 'TEXT',
614+
'validators' => array ( 0 => array ( 'type' => 'REGEX',
615+
'regex' => '/^([0-9]{1,11})$/',
616+
'errmsg'=> 'pm_max_requests_error_regex'),
617+
),
618+
'default' => '0',
619+
'value' => '',
620+
'width' => '3',
621+
'maxlength' => '6'
622+
),
593623
'php_open_basedir' => array (
594624
'datatype' => 'VARCHAR',
595625
'formtype' => 'TEXT',

interface/web/sites/lib/lang/de_web_domain.lng

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,10 @@ $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers mu&szlig
9292
$wb['hd_quota_error_regex'] = 'Harddisk Quota ist ungültig.';
9393
$wb['traffic_quota_error_regex'] = 'Traffic Quota ist ungültig.';
9494
$wb["fastcgi_php_version_txt"] = 'PHP-Version';
95+
$wb["pm_txt"] = 'PHP-FPM Process Manager';
96+
$wb["pm_process_idle_timeout_txt"] = 'PHP-FPM pm.process_idle_timeout';
97+
$wb["pm_max_requests_txt"] = 'PHP-FPM pm.max_requests';
98+
$wb["pm_process_idle_timeout_error_regex"] = 'PHP-FPM pm.process_idle_timeout muß eine positive ganze Zahl sein.';
99+
$wb["pm_max_requests_error_regex"] = 'PHP-FPM pm.max_requests muß eine ganze Zahl >= 0 sein.';
100+
$wb["pm_ondemand_hint_txt"] = 'Bitte beachten Sie, daß Ihre PHP-Version >= 5.3.9 sein muß, wenn Sie den ondemand Process-Manager nutzen möchten. Wenn Sie ondemand für eine ältere PHP-Version auswählen, wird PHP nicht mehr starten!';
95101
?>

interface/web/sites/lib/lang/en_web_domain.lng

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,10 @@ $wb["pm_max_spare_servers_error_regex"] = 'PHP-FPM pm.max_spare_servers must be
9292
$wb["hd_quota_error_regex"] = 'Harddisk quota is invalid.';
9393
$wb["traffic_quota_error_regex"] = 'Traffic quota is invalid.';
9494
$wb["fastcgi_php_version_txt"] = 'PHP Version';
95+
$wb["pm_txt"] = 'PHP-FPM Process Manager';
96+
$wb["pm_process_idle_timeout_txt"] = 'PHP-FPM pm.process_idle_timeout';
97+
$wb["pm_max_requests_txt"] = 'PHP-FPM pm.max_requests';
98+
$wb["pm_process_idle_timeout_error_regex"] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
99+
$wb["pm_max_requests_error_regex"] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
100+
$wb["pm_ondemand_hint_txt"] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
95101
?>

interface/web/sites/templates/web_domain_advanced.htm

Lines changed: 48 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,28 +20,47 @@ <h2><tmpl_var name="list_head_txt"></h2>
2020
<label for="allow_override">{tmpl_var name='allow_override_txt'}</label>
2121
<input name="allow_override" id="allow_override" value="{tmpl_var name='allow_override'}" size="30" maxlength="255" type="text" class="textInput" />
2222
</div>
23-
<div class="ctrlHolder phpfpm">
23+
<div class="phpfpm">
24+
<div class="ctrlHolder">
2425
<p class="label">{tmpl_var name='php_fpm_use_socket_txt'}</p>
2526
<div class="multiField">
2627
{tmpl_var name='php_fpm_use_socket'}
2728
</div>
2829
</div>
29-
<div class="ctrlHolder phpfpm">
30+
<div class="ctrlHolder">
31+
<label for="pm">{tmpl_var name='pm_txt'}</label>
32+
<select name="pm" id="pm" class="selectInput">
33+
{tmpl_var name='pm'}
34+
</select>
35+
</div>
36+
<div class="ctrlHolder pm_ondemand" style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;">
37+
{tmpl_var name='pm_ondemand_hint_txt'}
38+
</div>
39+
<div class="ctrlHolder">
3040
<label for="pm_max_children">{tmpl_var name='pm_max_children_txt'}</label>
3141
<input name="pm_max_children" id="pm_max_children" value="{tmpl_var name='pm_max_children'}" size="3" maxlength="3" type="text" class="textInput formLengthLimit" />
3242
</div>
33-
<div class="ctrlHolder phpfpm">
43+
<div class="ctrlHolder pm_dynamic">
3444
<label for="pm_start_servers">{tmpl_var name='pm_start_servers_txt'}</label>
3545
<input name="pm_start_servers" id="pm_start_servers" value="{tmpl_var name='pm_start_servers'}" size="3" maxlength="3" type="text" class="textInput formLengthLimit" />
3646
</div>
37-
<div class="ctrlHolder phpfpm">
47+
<div class="ctrlHolder pm_dynamic">
3848
<label for="pm_min_spare_servers">{tmpl_var name='pm_min_spare_servers_txt'}</label>
3949
<input name="pm_min_spare_servers" id="pm_min_spare_servers" value="{tmpl_var name='pm_min_spare_servers'}" size="3" maxlength="3" type="text" class="textInput formLengthLimit" />
4050
</div>
41-
<div class="ctrlHolder phpfpm">
51+
<div class="ctrlHolder pm_dynamic">
4252
<label for="pm_max_spare_servers">{tmpl_var name='pm_max_spare_servers_txt'}</label>
4353
<input name="pm_max_spare_servers" id="pm_max_spare_servers" value="{tmpl_var name='pm_max_spare_servers'}" size="3" maxlength="3" type="text" class="textInput formLengthLimit" />
4454
</div>
55+
<div class="ctrlHolder pm_ondemand">
56+
<label for="pm_process_idle_timeout">{tmpl_var name='pm_process_idle_timeout_txt'}</label>
57+
<input name="pm_process_idle_timeout" id="pm_process_idle_timeout" value="{tmpl_var name='pm_process_idle_timeout'}" size="3" maxlength="6" type="text" class="textInput formLengthLimit" />&nbsp;s
58+
</div>
59+
<div class="ctrlHolder">
60+
<label for="pm_max_requests">{tmpl_var name='pm_max_requests_txt'}</label>
61+
<input name="pm_max_requests" id="pm_max_requests" value="{tmpl_var name='pm_max_requests'}" size="3" maxlength="6" type="text" class="textInput formLengthLimit" />
62+
</div>
63+
</div>
4564
<div class="ctrlHolder">
4665
<label for="php_open_basedir">{tmpl_var name='php_open_basedir_txt'}</label>
4766
<input name="php_open_basedir" id="php_open_basedir" value="{tmpl_var name='php_open_basedir'}" size="30" type="text" class="textInput" style="width:400px;" />
@@ -75,6 +94,30 @@ <h2><tmpl_var name="list_head_txt"></h2>
7594
getServerId();
7695
adjustForm();
7796

97+
var pm = jQuery('#pm').val();
98+
pmMode(pm);
99+
jQuery('#pm').change(function(){
100+
pm = jQuery(this).val();
101+
pmMode(pm);
102+
});
103+
104+
function pmMode(pm){
105+
switch(pm){
106+
case "static":
107+
jQuery('.pm_dynamic').add('.pm_ondemand').hide();
108+
jQuery('.pm_static').show();
109+
break;
110+
case "dynamic":
111+
jQuery('.pm_static').add('.pm_ondemand').hide();
112+
jQuery('.pm_dynamic').show();
113+
break;
114+
case "ondemand":
115+
jQuery('.pm_static').add('.pm_dynamic').hide();
116+
jQuery('.pm_ondemand').show();
117+
break;
118+
}
119+
}
120+
78121
function getServerId(){
79122
jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getserverid"}, function(data) {
80123
serverId = data.serverid;

interface/web/sites/web_domain_edit.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ function onSubmit() {
518518
}
519519

520520
// Check if pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0
521-
if(isset($this->dataRecord['pm_max_children'])) {
521+
if(isset($this->dataRecord['pm_max_children']) && $this->dataRecord['pm'] == 'dynamic') {
522522
if(intval($this->dataRecord['pm_max_children']) >= intval($this->dataRecord['pm_max_spare_servers']) && intval($this->dataRecord['pm_max_spare_servers']) >= intval($this->dataRecord['pm_start_servers']) && intval($this->dataRecord['pm_start_servers']) >= intval($this->dataRecord['pm_min_spare_servers']) && intval($this->dataRecord['pm_min_spare_servers']) > 0){
523523

524524
} else {

server/conf/php_fpm_pool.conf.master

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,17 @@ listen.mode = 0660
1414
user = <tmpl_var name='fpm_user'>
1515
group = <tmpl_var name='fpm_group'>
1616

17-
pm = dynamic
17+
pm = <tmpl_var name='pm'>
1818
pm.max_children = <tmpl_var name='pm_max_children'>
19+
<tmpl_if name='pm' op='==' value='dynamic'>
1920
pm.start_servers = <tmpl_var name='pm_start_servers'>
2021
pm.min_spare_servers = <tmpl_var name='pm_min_spare_servers'>
2122
pm.max_spare_servers = <tmpl_var name='pm_max_spare_servers'>
23+
</tmpl_if>
24+
<tmpl_if name='pm' op='==' value='ondemand'>
25+
pm.process_idle_timeout = <tmpl_var name='pm_process_idle_timeout'>s;
26+
</tmpl_if>
27+
pm.max_requests = <tmpl_var name='pm_max_requests'>
2228

2329
chdir = /
2430

server/plugins-available/apache2_plugin.inc.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2005,10 +2005,13 @@ private function php_fpm_pool_update ($data,$web_config,$pool_dir,$pool_name,$so
20052005
$tpl->setVar('fpm_port', $web_config['php_fpm_start_port'] + $data['new']['domain_id'] - 1);
20062006
$tpl->setVar('fpm_user', $data['new']['system_user']);
20072007
$tpl->setVar('fpm_group', $data['new']['system_group']);
2008+
$tpl->setVar('pm', $data['new']['pm']);
20082009
$tpl->setVar('pm_max_children', $data['new']['pm_max_children']);
20092010
$tpl->setVar('pm_start_servers', $data['new']['pm_start_servers']);
20102011
$tpl->setVar('pm_min_spare_servers', $data['new']['pm_min_spare_servers']);
20112012
$tpl->setVar('pm_max_spare_servers', $data['new']['pm_max_spare_servers']);
2013+
$tpl->setVar('pm_process_idle_timeout', $data['new']['pm_process_idle_timeout']);
2014+
$tpl->setVar('pm_max_requests', $data['new']['pm_max_requests']);
20122015
$tpl->setVar('document_root', $data['new']['document_root']);
20132016
$tpl->setVar('security_level',$web_config['security_level']);
20142017
$php_open_basedir = ($data['new']['php_open_basedir'] == '')?escapeshellcmd($data['new']['document_root']):escapeshellcmd($data['new']['php_open_basedir']);

server/plugins-available/nginx_plugin.inc.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1630,10 +1630,13 @@ private function php_fpm_pool_update ($data,$web_config,$pool_dir,$pool_name,$so
16301630
$tpl->setVar('fpm_port', $web_config['php_fpm_start_port'] + $data['new']['domain_id'] - 1);
16311631
$tpl->setVar('fpm_user', $data['new']['system_user']);
16321632
$tpl->setVar('fpm_group', $data['new']['system_group']);
1633+
$tpl->setVar('pm', $data['new']['pm']);
16331634
$tpl->setVar('pm_max_children', $data['new']['pm_max_children']);
16341635
$tpl->setVar('pm_start_servers', $data['new']['pm_start_servers']);
16351636
$tpl->setVar('pm_min_spare_servers', $data['new']['pm_min_spare_servers']);
16361637
$tpl->setVar('pm_max_spare_servers', $data['new']['pm_max_spare_servers']);
1638+
$tpl->setVar('pm_process_idle_timeout', $data['new']['pm_process_idle_timeout']);
1639+
$tpl->setVar('pm_max_requests', $data['new']['pm_max_requests']);
16371640
$tpl->setVar('document_root', $data['new']['document_root']);
16381641
$tpl->setVar('security_level',$web_config['security_level']);
16391642
$php_open_basedir = ($data['new']['php_open_basedir'] == '')?escapeshellcmd($data['new']['document_root']):escapeshellcmd($data['new']['php_open_basedir']);

0 commit comments

Comments
 (0)