diff --git a/admin-dev/themes/default/template/controllers/performance/helpers/form/form.tpl b/admin-dev/themes/default/template/controllers/performance/helpers/form/form.tpl index 00de3dc18..4e6cd58fb 100644 --- a/admin-dev/themes/default/template/controllers/performance/helpers/form/form.tpl +++ b/admin-dev/themes/default/template/controllers/performance/helpers/form/form.tpl @@ -89,6 +89,7 @@
+
@@ -145,12 +146,47 @@ $('#caching_system').change(function() { showMemcached(); }); - + $('#addMemcachedServer').click(function() { $('#formMemcachedServer').show(); return false; }); + $('#testMemcachedServer').click(function() { + var host = $('input:text[name=memcachedIp]').val(); + var port = $('input:text[name=memcachedPort]').val(); + if (host && port) + { + $.ajax({ + url: 'index.php', + data: + { + controller: 'adminperformance', + token: '{$token}', + action: 'test_server', + sHost: host, + sPort: port, + ajax: true + }, + context: document.body, + dataType: 'json', + context: this, + async: false, + success: function(data) + { + if (data) + { + var color = data != 0 ? 'green' : 'red'; + $('#formMemcachedServerStatus').show(); + $('input:text[name=memcachedIp]').css('background', color); + $('input:text[name=memcachedPort]').css('background', color); + } + } + }); + } + return false; + }); + $('input[name="smarty_force_compile"], input[name="smarty_cache"], input[name="smarty_console"]').change(function(){ $('#smarty_up').val(1); }); diff --git a/controllers/admin/AdminPerformanceController.php b/controllers/admin/AdminPerformanceController.php index e9a0de88e..623457f74 100644 --- a/controllers/admin/AdminPerformanceController.php +++ b/controllers/admin/AdminPerformanceController.php @@ -503,13 +503,13 @@ class AdminPerformanceControllerCore extends AdminController public function initContent() { if (!extension_loaded('memcache')) - $this->warnings[] = $this->l('To use Memcached, you must install the Memcache PECL extension on your server.').' + $this->warnings[] = $this->l('To use Memcached, you must install the Memcache PECL extension on your server.').' http://www.php.net/manual/en/memcache.installation.php'; if (!extension_loaded('apc')) - $this->warnings[] = $this->l('To use APC, you must install the APC PECL extension on your server.').' + $this->warnings[] = $this->l('To use APC, you must install the APC PECL extension on your server.').' http://fr.php.net/manual/fr/apc.installation.php'; if (!extension_loaded('xcache')) - $this->warnings[] = $this->l('To use Xcache, you must install the Xcache extension on your server.').' + $this->warnings[] = $this->l('To use Xcache, you must install the Xcache extension on your server.').' http://xcache.lighttpd.net'; if (!is_writable(_PS_CACHEFS_DIRECTORY_)) @@ -759,6 +759,30 @@ class AdminPerformanceControllerCore extends AdminController else return parent::postProcess(); } + + public function ajaxProcess() + { + if (Tools::isSubmit('action') && Tools::getValue('action') == 'test_server') + { + $host = pSQL(Tools::getValue('sHost', '')); + $port = (int)Tools::getValue('sPort', 0); + + if ($host != '' && $port != 0) + { + $res = 0; + + if (function_exists('memcache_get_server_status') && + function_exists('memcache_connect') && + @fsockopen($host, $port)) + { + $memcache = @memcache_connect($host, $port); + $res = @memcache_get_server_status($memcache, $host, $port); + } + die(Tools::jsonEncode(array($res))); + } + } + die; + } + } -