[spip-dev] [3.1 SVN] tmp/chemin.txt est réécrit à chaque hit

Bonjour,

Nicod a signalé ça sur IRC.
J'ai instrumenté utils.php :
  foreach(creer_chemin() as $dir) {
    if (!isset($dirs[$a = $dir . $dirname]))
      $dirs[$a] = (is_dir(_ROOT_CWD . $a) || !$a) ;
    if ($dirs[$a]) {
      if (file_exists(_ROOT_CWD . ($a .= $file))) {
        if ($include AND !isset($inc[$dirname][$file])) {
          include_once _ROOT_CWD . $a;
          $inc[$dirname][$file] = $inc[''][$dirname . $file] = true;
        }
        if (!defined('_SAUVER_CHEMIN')) {
          define('_SAUVER_CHEMIN',true);
          echo("1) file : $file , dirname : $dirname<br />");
          echo "<pre>".debug_print_backtrace()."</pre>";
        }
        return $GLOBALS['path_files'][$GLOBALS['path_sig']][$dirname][$file] = $GLOBALS['path_files'][$GLOBALS['path_sig']][''][$dirname . $file] = $a;
      }
    }
  }

Ce qui donne :
1) file : objets.php , dirname : base/

#0 find_in_path(base/objets.php, , 1) called at [ecrire\inc\utils.php:124]
#1 include_spip(base/objets) called at [ecrire\base\connect_sql.php:19]
#2 require_once(ecrire\base\connect_sql.php) called at [ecrire\inc_version.php:337]
#3 include_once(ecrire\inc_version.php) called at [spip.php:15]
#4 include(spip.php) called at [index.php:3]

Et le chemin.txt généré contien :
s:15:"base/objets.php";s:22:"ecrire/base/objets.php";
s:10:"objets.php";s:22:"ecrire/base/objets.php";

Si ça peut aider au débug

Je ne comprends pas, les logs aussi sont écris à chaque hit.
En quoi est-ce gênant ?

Tu proposerais que le chemin soit mis en cache ?
Quel gain de performance est-ce que cela représenterait selon toi ?

RealET a écrit le 26/10/2015 17:48 :

Ce qui donne :

Et ça donne exactement la même chose sans être logué dans une session privée du navigateur (Opera).

Je corrige ce que j’ai dis.
Calculer le chemin c’est parcourir beaucoup de fichiers.
Ca mériterait effectivement d’être eb cache, bien vu !

Résolu par
https://core.spip.net/projects/spip/repository/revisions/22441

Merci !