Valider 34b99097 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

"separation des declarations du prechargement dans inc_version et des fonctions dans inc/utils

ajustement du perimetre pour ne pas charger tout le necessaire au calcul d'une page quand on ne fait que la servir depuis le cache"
parent 71e0efe5
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+4 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -158,7 +158,11 @@ function ecrire_plugin_actifs($plugin,$pipe_recherche=false,$operation='raz'){
			$plugin = array_diff($plugin_valides,$plugin);
	}
	
	// recharcher le xml des plugins a activer
	$plugin_valides = liste_plugin_valides($plugin,$infos,true);
	// invalider les fichiers precompiles du noyau
	invalide_prefetch();
	
	ecrire_meta('plugin',serialize($plugin_valides));
	$plugin_header_info = array();
	foreach($plugin_valides as $p=>$info){
+6 −28
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -58,40 +58,12 @@ function charger_fonction($nom, $dossier='exec', $continue=false) {
	exit;
}

// definition des lots de fichier precharges en blocs pour reduire les find_in_path en usage courant
// mecanisme desactivable par define('_PAS_DE_PRECHARGEMENT_PHP',1);
// cas typique de service d'une page en cache
$GLOBALS['prefetch']['inc/meta']['fetch']='service_mini';
$GLOBALS['prefetch']['inc/session']['fetch']='service_mini';
$GLOBALS['prefetch']['public/assembler']['fetch']='service_mini';
$GLOBALS['prefetch']['public/cacher']['fetch']='service_mini';
$GLOBALS['prefetch']['public/stats']['fetch']='service_mini';

// cas typique de calcul d'un squelette
$GLOBALS['prefetch']['inc/charsets']['fetch']='calcul_skel';
$GLOBALS['prefetch']['inc/filtres']['fetch']='calcul_skel';
$GLOBALS['prefetch']['base/abstract_sql']['fetch']='calcul_skel';
$GLOBALS['prefetch']['base/auxiliaires']['fetch']='calcul_skel';
$GLOBALS['prefetch']['base/db_mysql']['fetch']='calcul_skel';
$GLOBALS['prefetch']['base/serial']['fetch']='calcul_skel';
$GLOBALS['prefetch']['base/typedoc']['fetch']='calcul_skel';
$GLOBALS['prefetch']['inc/actions']['fetch']='calcul_skel';
$GLOBALS['prefetch']['inc/acces']['fetch']='calcul_skel';
$GLOBALS['prefetch']['inc/date']['fetch']='calcul_skel';
$GLOBALS['prefetch']['inc/texte']['fetch']='calcul_skel';
$GLOBALS['prefetch']['public/parametrer']['fetch']='calcul_skel';
$GLOBALS['prefetch']['public/styliser']['fetch']='calcul_skel';
$GLOBALS['prefetch']['public/composer']['fetch']='calcul_skel';
$GLOBALS['prefetch']['public/interfaces']['fetch']='calcul_skel';
$GLOBALS['prefetch']['inc/documents']['fetch']='calcul_skel';

// inclusion anticipee par bloc pour optimisation des find_in_path
// chaque fichier inclus est place dans une fonction ad-hoc pour ne pas etre execute
// avant qu'il ne soit reellement necessaire, et en particulier ne pas bloquer les
// surcharges par redefinition de fonction (charger_fonction)
// on inclue un numero de version de format du prefetch dans le nom du fichier
// ce qui permet les upgrades sans soucis
define('_PREFETCH_PREFIXE_FICHIERS','prefetch-v01-noyau-');
function include_prefetch($f){
	static $encours=false;
	if ($GLOBALS['prefetch'][$f]['fetch']==false) return false;// fichier charge et execute
@@ -131,6 +103,12 @@ function include_prefetch($f){
	ecrire_fichier($nom_fetch,$source); #compacte_php($source) si on a un compacteur qui marche ...
	return true;
}
// invalidation des fichiers de prechargement
function invalide_prefetch(){
	$fetches = preg_files(_DIR_TMP,_PREFETCH_PREFIXE_FICHIERS.".*[.]php$",10,false);
	foreach($fetches as $f) @unlink($f);
}

//
// une fonction cherchant un fichier dans une liste de repertoires
//
+29 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -299,6 +299,35 @@ $spip_version_code = 1.9250;
$auteur_session = $connect_statut = $connect_toutes_rubriques =  $hash_recherche = $hash_recherche_strict = '';
$connect_id_rubrique = array();

// definition des lots de fichier precharges en blocs pour reduire les find_in_path en usage courant
// mecanisme desactivable par 
define('_PREFETCH_PREFIXE_FICHIERS','prefetch-v01-noyau-');
#define('_PAS_DE_PRECHARGEMENT_PHP',1);
// scenario typique de service d'une page en cache
$GLOBALS['prefetch']['inc/meta']['fetch']='service_mini';
$GLOBALS['prefetch']['inc/session']['fetch']='service_mini';
$GLOBALS['prefetch']['public/assembler']['fetch']='service_mini';
$GLOBALS['prefetch']['public/cacher']['fetch']='service_mini';
$GLOBALS['prefetch']['public/stats']['fetch']='service_mini';

// scenario typique de calcul d'un squelette
$GLOBALS['prefetch']['inc/charsets']['fetch']='calcul_skel';
$GLOBALS['prefetch']['inc/filtres']['fetch']='calcul_skel';
$GLOBALS['prefetch']['base/abstract_sql']['fetch']='calcul_skel';
//$GLOBALS['prefetch']['base/auxiliaires']['fetch']='calcul_skel'; // appele parfois sur un hit en cache
$GLOBALS['prefetch']['base/db_mysql']['fetch']='calcul_skel';
$GLOBALS['prefetch']['base/serial']['fetch']='calcul_skel';
$GLOBALS['prefetch']['base/typedoc']['fetch']='calcul_skel';
//$GLOBALS['prefetch']['inc/actions']['fetch']='calcul_skel'; // appele parfois sur un hit en cache
$GLOBALS['prefetch']['inc/acces']['fetch']='calcul_skel';
$GLOBALS['prefetch']['inc/date']['fetch']='calcul_skel';
$GLOBALS['prefetch']['inc/texte']['fetch']='calcul_skel';
$GLOBALS['prefetch']['public/parametrer']['fetch']='calcul_skel';
$GLOBALS['prefetch']['public/styliser']['fetch']='calcul_skel';
$GLOBALS['prefetch']['public/composer']['fetch']='calcul_skel';
$GLOBALS['prefetch']['public/interfaces']['fetch']='calcul_skel';
$GLOBALS['prefetch']['inc/documents']['fetch']='calcul_skel';

// *** Fin des globales *** //

//