Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop

This commit is contained in:
Laurent Destailleur 2013-07-09 21:41:05 +02:00
commit fbf6f150bc
7 changed files with 503 additions and 7 deletions

View File

@ -0,0 +1,451 @@
<?php
/* Copyright (C) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* \file htdocs/admin/system/perf.php
* \brief Page to show Performance information
*/
require '../../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/memory.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/geturl.lib.php';
$langs->load("admin");
$langs->load("install");
$langs->load("other");
if (! $user->admin)
accessforbidden();
if (GETPOST('action') == 'donothing')
{
exit;
}
/*
* View
*/
$form=new Form($db);
$nowstring=dol_print_date(dol_now(),'dayhourlog');
llxHeader();
print_fiche_titre($langs->trans("PerfDolibarr"),'','setup');
print $langs->trans("YouMayFindPerfAdviceHere",'http://wiki.dolibarr.org/index.php/FAQ_Increase_Performance').' (<a href="'.$_SERVER["PHP_SELF"].'">'.$langs->trans("Reload").'</a>)<br>';
// XDebug
print '<br>';
print '<strong>'.$langs->trans("XDebug").'</strong>: ';
$test=!function_exists('xdebug_is_enabled');
if ($test) print img_picto('','tick.png').' '.$langs->trans("NotInstalled");
else
{
print img_picto('','warning').' '.$langs->trans("XDebugInstalled");
print $langs->trans("MoreInformation").' <a href="'.DOL_URL_ROOT.'/admin/xdebug.php'.'">XDebug admin page</a>';
}
print '<br>';
// Applicative cache
print '<br>';
print '<strong>'.$langs->trans("ApplicativeCache").'</strong>: ';
$test=!empty($conf->memcached->enabled);
if ($test)
{
if (!empty($conf->global->MEMCACHED_SERVER))
{
print img_picto('','tick.png').' '.$langs->trans("MemcachedAvailableAndSetup");
print $langs->trans("MoreInformation").' <a href="'.dol_buildpath('/memcached/admin/memcached.php',1).'">Memcached module admin page</a>';
}
else
{
print img_picto('','warning').' '.$langs->trans("MemcachedModuleAvailableButNotSetup");
}
}
else print img_picto('','warning').' '.$langs->trans("MemcachedNotAvailable");
print '</br>';
// OPCode cache
print '<br>';
print '<strong>'.$langs->trans("OPCodeCache").'</strong>: ';
$test1=function_exists('xcache_info');
if ($test1)
{
print img_picto('','tick.png').' '.$langs->trans("XCacheInstalled");
print $langs->trans("MoreInformation").' <a href="'.DOL_URL_ROOT.'/admin/xcache.php'.'">Xcache admin page</a>';
}
else
{
$test2=function_exists('eaccelerator_info');
if ($test2) print img_picto('','tick.png').' '.$langs->trans("EAcceleratorInstalled");
else print $langs->trans("NoOPCodeCacheFound");
}
print '<br>';
// HTTPCacheStaticResources
print '<script type="text/javascript" language="javascript">
jQuery(document).ready(function() {
var getphpurl;
var cachephpstring;
var compphpstring;
getphpurl = $.ajax({
type: "GET",
url: \''.DOL_URL_ROOT.'/index.php\',
cache: false,
/* async: false, */
/* crossDomain: true,*/
success: function () {
cachephpstring=getphpurl.getResponseHeader(\'Cache-Control\');
/* alert(\'php:\'+getphpurl.getAllResponseHeaders()); */
/*alert(\'php:\'+cachephpstring);*/
if (cachephpstring == null || cachephpstring.indexOf("no-cache") !== -1)
{
jQuery("#httpcachephpok").hide();
jQuery("#httpcachephpko").show();
}
else
{
jQuery("#httpcachephpok").show();
jQuery("#httpcachephpko").hide();
}
compphpstring=getphpurl.getResponseHeader(\'Content-Encoding\');
/* alert(\'php:\'+getphpurl.getAllResponseHeaders()); */
/*alert(\'php:\'+compphpstring);*/
if (compphpstring == null || (compphpstring.indexOf("gzip") == -1 && compphpstring.indexOf("deflate") == -1))
{
jQuery("#httpcompphpok").hide();
jQuery("#httpcompphpko").show();
}
else
{
jQuery("#httpcompphpok").show();
jQuery("#httpcompphpko").hide();
}
}
})
var getcssurl;
var cachecssstring;
var compcssstring;
getcssurl = $.ajax({
type: "GET",
url: \''.DOL_URL_ROOT.'/includes/jquery/css/smoothness/jquery-ui-latest.custom.css\',
cache: false,
/* async: false, */
/*crossDomain: true, */
success: function () {
cachecssstring=getcssurl.getResponseHeader(\'Cache-Control\');
/* alert(\'css:\'+getcssurl.getAllResponseHeaders()); */
/*alert(\'css:\'+cachecssstring);*/
if (cachecssstring != null && cachecssstring.indexOf("no-cache") !== -1)
{
jQuery("#httpcachecssok").hide();
jQuery("#httpcachecssko").show();
}
else
{
jQuery("#httpcachecssok").show();
jQuery("#httpcachecssko").hide();
}
compcssstring=getcssurl.getResponseHeader(\'Content-Encoding\');
/* alert(\'php:\'+getcssurl.getAllResponseHeaders()); */
/*alert(\'php:\'+compcssstring);*/
if (compcssstring == null || (compcssstring.indexOf("gzip") == -1 && compcssstring.indexOf("deflate") == -1))
{
jQuery("#httpcompcssok").hide();
jQuery("#httpcompcssko").show();
}
else
{
jQuery("#httpcompcssok").show();
jQuery("#httpcompcssko").hide();
}
}
})
var getcssphpurl;
var cachecssphpstring;
var compcssphpstring;
getcssphpurl = $.ajax({
type: "GET",
url: \''.DOL_URL_ROOT.'/theme/eldy/style.css.php\',
cache: false,
/* async: false, */
/*crossDomain: true,*/
success: function () {
cachecssphpstring=getcssphpurl.getResponseHeader(\'Cache-Control\');
/* alert(\'cssphp:\'+getcssphpurl.getAllResponseHeaders()); */
/*alert(\'cssphp:\'+cachecssphpstring);*/
if (cachecssphpstring != null && cachecssphpstring.indexOf("no-cache") !== -1)
{
jQuery("#httpcachecssphpok").hide();
jQuery("#httpcachecssphpko").show();
}
else
{
jQuery("#httpcachecssphpok").show();
jQuery("#httpcachecssphpko").hide();
}
compcssphpstring=getcssphpurl.getResponseHeader(\'Content-Encoding\');
/* alert(\'php:\'+getcssphpurl.getAllResponseHeaders()); */
/*alert(\'php:\'+compcssphpstring);*/
if (compcssphpstring == null || (compcssphpstring.indexOf("gzip") == -1 && compcssphpstring.indexOf("deflate") == -1))
{
jQuery("#httpcompcssphpok").hide();
jQuery("#httpcompcssphpko").show();
}
else
{
jQuery("#httpcompcssphpok").show();
jQuery("#httpcompcssphpko").hide();
}
}
})
var getimgurl;
var cacheimgstring;
var compimgstring;
getimgurl = $.ajax({
type: "GET",
url: \''.DOL_URL_ROOT.'/theme/eldy/img/help.png\',
cache: false,
/* async: false, */
/*crossDomain: true,*/
success: function () {
cacheimgstring=getimgurl.getResponseHeader(\'Cache-Control\');
/* alert(\'img:\'+getimgurl.getAllResponseHeaders()); */
/*alert(\'img:\'+cacheimgstring);*/
if (cacheimgstring != null && cacheimgstring.indexOf("no-cache") !== -1)
{
jQuery("#httpcacheimgok").hide();
jQuery("#httpcacheimgko").show();
}
else
{
jQuery("#httpcacheimgok").show();
jQuery("#httpcacheimgko").hide();
}
compimgstring=getimgurl.getResponseHeader(\'Content-Encoding\');
/* alert(\'php:\'+getimgurl.getAllResponseHeaders()); */
/*alert(\'php:\'+compimgstring);*/
if (compimgstring == null || (compimgstring.indexOf("gzip") == -1 && compimgstring.indexOf("deflate") == -1))
{
jQuery("#httpcompimgok").hide();
jQuery("#httpcompimgko").show();
}
else
{
jQuery("#httpcompimgok").show();
jQuery("#httpcompimgko").hide();
}
}
})
var getjsurl;
var cachejsstring;
var compjsstring;
getjsurl = $.ajax({
type: "GET",
url: \''.DOL_URL_ROOT.'/core/js/lib_head.js\',
cache: false,
/* async: false, */
/* crossDomain: true,*/
success: function () {
cachejsstring=getjsurl.getResponseHeader(\'Cache-Control\');
/*alert(\'js:\'+getjsurl.getAllResponseHeaders());*/
/*alert(\'js:\'+cachejsstring);*/
if (cachejsstring != null && cachejsstring.indexOf("no-cache") !== -1)
{
jQuery("#httpcachejsok").hide();
jQuery("#httpcachejsko").show();
}
else
{
jQuery("#httpcachejsok").show();
jQuery("#httpcachejsko").hide();
}
compjstring=getjsurl.getResponseHeader(\'Content-Encoding\');
/* alert(\'php:\'+getjsurl.getAllResponseHeaders()); */
/*alert(\'php:\'+compjsstring);*/
if (compjsstring == null || (compjsstring.indexOf("gzip") == -1 && compjsstring.indexOf("deflate") == -1))
{
jQuery("#httpcompjsok").hide();
jQuery("#httpcompjsko").show();
}
else
{
jQuery("#httpcompjsok").show();
jQuery("#httpcompjsko").hide();
}
}
})
var getjsphpurl;
var cachejsphpstring;
var compjsphpstring;
getjsphpurl = $.ajax({
type: "GET",
url: \''.DOL_URL_ROOT.'/core/js/datepicker.js.php\',
cache: false,
/* async: false, */
/* crossDomain: true,*/
success: function () {
cachejsphpstring=getjsphpurl.getResponseHeader(\'Cache-Control\');
/* alert(\'jsphp:\'+getjsphpurl.getAllResponseHeaders()); */
/*alert(\'jsphp:\'+cachejsphpstring);*/
if (cachejsphpstring != null && cachejsphpstring.indexOf("no-cache") !== -1)
{
jQuery("#httpcachejsphpok").hide();
jQuery("#httpcachejsphpko").show();
}
else
{
jQuery("#httpcachejsphpok").show();
jQuery("#httpcachejsphpko").hide();
}
compjsphpstring=getjsphpurl.getResponseHeader(\'Content-Encoding\');
/* alert(\'php:\'+getjsphpurl.getAllResponseHeaders()); */
/*alert(\'php:\'+compjsphpstring);*/
if (compjsphpstring == null || (compjsphpstring.indexOf("gzip") == -1 && compjsphpstring.indexOf("deflate") == -1))
{
jQuery("#httpcompjsphpok").hide();
jQuery("#httpcompjsphpko").show();
}
else
{
jQuery("#httpcompjsphpok").show();
jQuery("#httpcompjsphpko").hide();
}
}
})
});
</script>';
print '<br>';
print '<strong>'.$langs->trans("HTTPCacheStaticResources").' - ';
print $langs->trans("CacheByServer").':</strong><br>';
// No cahce on PHP
//print '<div id="httpcachephpok">'.img_picto('','warning.png').' '.$langs->trans("FilesOfTypeNotCompressed",'php (.php)').'</div>';
//print '<div id="httpcachephpko">'.img_picto('','tick.png').' '.$langs->trans("FilesOfTypeNotCached",'php (.php)').'</div>';
// Cache on rest
print '<div id="httpcachecssok">'.img_picto('','tick.png').' '.$langs->trans("FilesOfTypeCached",'css (.css)').'</div>';
print '<div id="httpcachecssko">'.img_picto('','warning.png').' '.$langs->trans("FilesOfTypeNotCached",'css (.css)').'</div>';
print '<div id="httpcachecssphpok">'.img_picto('','tick.png').' '.$langs->trans("FilesOfTypeCached",'css (.css.php)').'</div>';
print '<div id="httpcachecssphpko">'.img_picto('','warning.png').' '.$langs->trans("FilesOfTypeNotCached",'css (.css.php)').'</div>';
print '<div id="httpcacheimgok">'.img_picto('','tick.png').' '.$langs->trans("FilesOfTypeCached",'img (.png)').'</div>';
print '<div id="httpcacheimgko">'.img_picto('','warning.png').' '.$langs->trans("FilesOfTypeNotCached",'img (.png)').'</div>';
print '<div id="httpcachejsok">'.img_picto('','tick.png').' '.$langs->trans("FilesOfTypeCached",'javascript (.js)').'</div>';
print '<div id="httpcachejsko">'.img_picto('','warning.png').' '.$langs->trans("FilesOfTypeNotCached",'javascript (.js)').'</div>';
print '<div id="httpcachejsphpok">'.img_picto('','tick.png').' '.$langs->trans("FilesOfTypeCached",'javascript (.js.php)').'</div>';
print '<div id="httpcachejsphpko">'.img_picto('','warning.png').' '.$langs->trans("FilesOfTypeNotCached",'javascript (.js.php)').'</div>';
print '<br>';
print '<strong>'.$langs->trans("HTTPCacheStaticResources").' - ';
print $langs->trans("CacheByClient").':</strong><br>';
print $langs->trans("TestNotPossibleWithCurrentBrowsers").'<br>';
// Compressions
print '<br>';
print '<strong>'.$langs->trans("CompressionOfResources").'</strong>: ';
//$tmp=getURLContent(DOL_URL_ROOT.'/index.php','GET');var_dump($tmp);
print '<br>';
// on PHP
print '<div id="httpcompphpok">'.img_picto('','tick.png').' '.$langs->trans("FilesOfTypeCompressed",'php (.php)').'</div>';
print '<div id="httpcompphpko">'.img_picto('','warning.png').' '.$langs->trans("FilesOfTypeNotCompressed",'php (.php)').'</div>';
// on rest
print '<div id="httpcompcssok">'.img_picto('','tick.png').' '.$langs->trans("FilesOfTypeCompressed",'css (.css)').'</div>';
print '<div id="httpcompcssko">'.img_picto('','warning.png').' '.$langs->trans("FilesOfTypeNotCompressed",'css (.css)').'</div>';
print '<div id="httpcompcssphpok">'.img_picto('','tick.png').' '.$langs->trans("FilesOfTypeCompressed",'css (.css.php)').'</div>';
print '<div id="httpcompcssphpko">'.img_picto('','warning.png').' '.$langs->trans("FilesOfTypeNotCompressed",'css (.css.php)').'</div>';
//print '<div id="httpcompimgok">'.img_picto('','tick.png').' '.$langs->trans("FilesOfTypeCompressed",'img (.png)').'</div>';
//print '<div id="httpcompimgko">'.img_picto('','warning.png').' '.$langs->trans("FilesOfTypeNotCompressed",'img (.png)').'</div>';
print '<div id="httpcompjsok">'.img_picto('','tick.png').' '.$langs->trans("FilesOfTypeCompressed",'javascript (.js)').'</div>';
print '<div id="httpcompjsko">'.img_picto('','warning.png').' '.$langs->trans("FilesOfTypeNotCompressed",'javascript (.js)').'</div>';
print '<div id="httpcompjsphpok">'.img_picto('','tick.png').' '.$langs->trans("FilesOfTypeCompressed",'javascript (.js.php)').'</div>';
print '<div id="httpcompjsphpko">'.img_picto('','warning.png').' '.$langs->trans("FilesOfTypeNotCompressed",'javascript (.js.php)').'</div>';
// Database driver
print '<br>';
print '<strong>'.$langs->trans("DriverType").'</strong>: ';
print '<br>';
if ($conf->db->type == 'mysql' || $conf->db->type == 'mysqli')
{
$test=($conf->db->type == 'mysqli');
if ($test)
{
print img_picto('','tick.png').' '.$langs->trans("YouUseBestDriver",$conf->db->type);
}
else
{
print img_picto('','warning.png').' '.$langs->trans("YouDoNotUseBestDriver",$conf->db->type,'mysqli');
}
print '<br>';
}
// Product search
print '<br>';
print '<strong>'.$langs->trans("ProductSearch").'</strong>: ';
print '<br>';
$tab = array();
$sql = "SELECT COUNT(*) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."product as p";
$resql=$db->query($sql);
if ($resql)
{
$limitforoptim=10000;
$num=$db->num_rows($resql);
if ($nb > $limitforoptim)
{
if (empty($conf->global->PRODUCT_DONOTSEARCH_ANYWHERE))
{
print img_picto('','warning.png').' '.$langs->trans("YouHaveXProductUseSearchOptim",$num);
}
else
{
print img_picto('','tick.png').' '.$langs->trans("YouHaveXProductAndSearchOptimOn",$num);
}
}
else
{
print img_picto('','tick.png').' '.$langs->trans("NbOfProductIsLowerThanNoPb",$limitforoptim);
}
print '<br>';
$db->free($resql);
}
// Browser
print '<br>';
print '<strong>'.$langs->trans("Browser").'</strong>: ';
var_dump($conf->browser);
print '<br>';
// Database statistics update
print '<br>';
print '<strong>'.$langs->trans("DatabaseStatistics").'</strong>: ';
print '<br>';
llxFooter();
$db->close();
?>

View File

@ -56,7 +56,7 @@ if (function_exists('socket_create'))
print 'XDEBUG_PORT: '.$port."<br>\n";
print "<br>\n";
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (empty($socket)) die('Unable to preapre a socket');
if (empty($socket)) die('Unable to prepare a socket');
//socket_bind($sock, $address, $port) or die('Unable to bind on address='.$address.' port='.$port);
//socket_listen($sock);
//$client = socket_accept($sock);

View File

@ -285,7 +285,7 @@ function dol_buildpath($path, $type=0)
if (! empty($regs[1]))
{
//print $key.'-'.$dirroot.'/'.$path.'-'.$conf->file->dol_url_root[$type].'<br>'."\n";
if (file_exists($dirroot.'/'.$path))
if (file_exists($dirroot.'/'.$regs[1]))
{
if ($type == 1)
{

View File

@ -83,7 +83,7 @@ function getURLContent($url,$postorget='GET',$param='')
$rep['content']=$response;
$rep['curl_error_no']='';
$rep['curl_error_msg']='';
dol_syslog("getURLContent response=".$response);
if (curl_errno($ch))
@ -96,7 +96,10 @@ function getURLContent($url,$postorget='GET',$param='')
}
else
{
//closing the curl
$info = curl_getinfo($ch);
$rep['header_size']=$info['header_size'];
//closing the curl
curl_close($ch);
}

View File

@ -521,13 +521,14 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
$newmenu->add('/admin/system/phpinfo.php?mainmenu=home&amp;leftmenu=admintools', $langs->trans('InfoPHP'), 1);
//if (function_exists('xdebug_is_enabled')) $newmenu->add('/admin/system/xdebug.php', $langs->trans('XDebug'),1);
$newmenu->add('/admin/system/database.php?mainmenu=home&amp;leftmenu=admintools', $langs->trans('InfoDatabase'), 1);
if (function_exists('eaccelerator_info')) $newmenu->add("/admin/tools/eaccelerator.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("EAccelerator"),1);
//$newmenu->add("/admin/system/perf.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("InfoPerf"),1);
$newmenu->add("/admin/tools/purge.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("Purge"),1);
$newmenu->add("/admin/tools/dolibarr_export.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("Backup"),1);
$newmenu->add("/admin/tools/dolibarr_import.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("Restore"),1);
$newmenu->add("/admin/tools/update.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("MenuUpgrade"),1);
if (function_exists('eaccelerator_info')) $newmenu->add("/admin/tools/eaccelerator.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("EAccelerator"),1);
$newmenu->add("/admin/tools/listevents.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("Audit"),1);
$newmenu->add("/admin/tools/listsessions.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("Sessions"),1);
$newmenu->add("/admin/tools/purge.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("Purge"),1);
$newmenu->add('/admin/system/about.php?mainmenu=home&amp;leftmenu=admintools', $langs->trans('About'), 1);
$newmenu->add("/support/index.php?mainmenu=home&amp;leftmenu=admintools", $langs->trans("HelpCenter"),1,1,'targethelp');
}

View File

@ -884,6 +884,7 @@ InfoOS=Infos OS
InfoWebServer=Infos web server
InfoDatabase=Infos database
InfoPHP=Infos PHP
InfoPerf=Infos performances
ListEvents=Audit events
ListOfSecurityEvents=List of Dolibarr security events
SecurityEventsPurged=Security events purged
@ -980,6 +981,11 @@ YesInSummer=Yes in summer
OnlyFollowingModulesAreOpenedToExternalUsers=Note, only following modules are opened to external users (whatever are permission of such users):
SuhosinSessionEncrypt=Session storage encrypted by Suhosin
ConditionIsCurrently=Condition is currently %s
TestNotPossibleWithCurrentBrowsers=Automatic detection not possible
YouUseBestDriver=You use driver %s that is best driver available currently.
YouDoNotUseBestDriver=You use drive %s but driver %s is recommanded.
SearchProduct=Optimisation recherche produits
NbOfProductIsLowerThanNoPb=You have only %s products/services into database. This does not required any particular optimization.
##### Module password generation
PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: 8 characters containing shared numbers and characters in lowercase.
@ -1228,6 +1234,22 @@ LDAPDescGroups=This page allows you to define LDAP attributes name in LDAP tree
LDAPDescMembers=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr members module.
LDAPDescValues=Example values are designed for <b>OpenLDAP</b> with following loaded schemas: <b>core.schema, cosine.schema, inetorgperson.schema</b>). If you use thoose values and OpenLDAP, modify your LDAP config file <b>slapd.conf</b> to have all thoose schemas loaded.
ForANonAnonymousAccess=For an authenticated access (for a write access for example)
PerfDolibarr=Performance setup/optimizing report
YouMayFindPerfAdviceHere=You will find on this page some checks or advices related to performance.
NotInstalled=Not installed, so your server is not slow down by this.
ApplicativeCache=Applicative cache
MemcachedNotAvailable=No applicative cache found. You can enhance performance by installing a cache server Memcached and a module able to use this cache server. More information here http://wiki.dolibarr.org/index.php/Module_MemCached_EN. Note that a lot of web hosting provider does not provide such cache server.
OPCodeCache=OPCode cache
NoOPCodeCacheFound=No OPCode cache found. May be you use another OPCode cache than XCache or eAccelerator (good), may be you don't have OPCode cache (very bad).
HTTPCacheStaticResources=HTTP cache for static resources (css, img, javascript)
FilesOfTypeCached=Files of type %s are cached by HTTP server
FilesOfTypeNotCached=Files of type %s are not cached by HTTP server
FilesOfTypeCompressed=Files of type %s are compressed by HTTP server
FilesOfTypeNotCompressed=Files of type %s are not compressed by HTTP server
CacheByServer=Cache by server
CacheByClient=Cache by browser
CompressionOfResources=Compression of HTTP responses
TestNotPossibleWithCurrentBrowsers=Such an automatic detection is not possible with current bowsers
##### Products #####
ProductSetup=Products module setup
ServiceSetup=Services module setup

View File

@ -886,6 +886,7 @@ InfoOS=Infos OS
InfoWebServer=Infos web server
InfoDatabase=Infos base de donnée
InfoPHP=Infos PHP
InfoPerf=Infos performances
ListEvents=Audit événements
ListOfSecurityEvents=Liste des événements de sécurité Dolibarr
SecurityEventsPurged=Evenement de sécurité purgés
@ -982,7 +983,25 @@ YesInSummer=Oui en été
OnlyFollowingModulesAreOpenedToExternalUsers=Remarque, seuls les modules suivants sont ouverts aux utilisateurs externes (quelles que soient les permissions de ces utilisateurs) :
SuhosinSessionEncrypt=Stockage des sessions chiffrées par Suhosin
ConditionIsCurrently=La condition est actuellement %s
PerfDolibarr=Rapport de configuration/optimisation sur la performance
YouMayFindPerfAdviceHere=Sur cette page vous trouverez quelques indicateurs ou conseils pour optimiser la performance.
NotInstalled=Non installé, aussi votre serveur n'est pas ralentit par cela.
ApplicativeCache=Cache applicatif
MemcachedNotAvailable=Aucun cache applicatif disponible. Vous pouvez accélérer les performances de Dolibarr en installant un serveur de cache Memcached et un module de cache applicatif exploitant ce serveur. Plus d'info sur la page http://wiki.dolibarr.org/index.php/Module_MemCached. Notez que de nombreux hébergeurs bas couts ne fournissent pas de tels serveurs de cache dans leur infrastructure.
OPCodeCache=Cache OPCode
NoOPCodeCacheFound=Pas de cache OPCode trouvé. Peut-être utilisez-vous un cache OPCode différent de XCache ou eAccelerator (bien), peut-être n'avez vous pas du tout de cache OPCode (très mauvais).
HTTPCacheStaticResources=Cache HTTP des ressources statiques (css, img, javascript)
FilesOfTypeCached=Fichiers de type %s mis en cache par le serveur HTTP
FilesOfTypeNotCached=Fichiers de type %s non mis en cache par le serveur HTTP
FilesOfTypeCompressed=Fichiers de type %s compressé par le serveur HTTP
FilesOfTypeNotCompressed=Fichiers de type %s non compressé par le serveur HTTP
CacheByServer=Cache par le serveur
CacheByClient=Cache par le navigateur
CompressionOfResources=Compression des réponses HTTP
TestNotPossibleWithCurrentBrowsers=Détection automatique non possible
YouUseBestDriver=Vous utilisez le driver %s qui est le driver recommandé actuellement.
YouDoNotUseBestDriver=Vous utilisez le driver %s mais le driver %s est recommandé.
NbOfProductIsLowerThanNoPb=Vous n'avez que %s produits/services en base. Ceci ne requiert pas d'optimisation particulière.
##### Module password generation
PasswordGenerationStandard=Renvoie un mot de passe généré selon l'algorithme interne de Dolibarr : 8 caractères, chiffres et caractères en minuscules mélangés.
PasswordGenerationNone=Ne propose pas de mots de passe générés. Le mot de passe est à saisir manuellement.