Debut a 10:08:32
array(3) {
  ["erreur"]=>
  int(0)
  ["fichier"]=>
  int(127)
  ["repertoire"]=>
  int(4)
}
Fin a 10:08:32
<?php
/**
 * @file ordering.php
 * @brief Script qui fixe récursivement une date à tous les fichiers
 * d'un répertoire de façon à ce que leur ordre chronologique soit identique
 * à leur ordre alphabétique naturel.
 *
 * @note nécessite une version de PHP supérieure à 5.3 car avant cette version,
 * la fonction  touch() ne marche pas avec les répertoires.
 *
 * @author hughes monget
 * @see http://monget.com/
 * @since 2010-02-01
 * @date 2010-02-01
 */
// On fixe des paramètres au script courant.
error_reporting(E_ALL | E_NOTICE | E_STRICT);
set_time_limit(0);
$arr_ini_set = array('log_errors' => 0, 'display_errors' => 1, 'error_log' => 0, 'html_errors' => 0, 'date.timezone' => 'Europe/Paris');
array_walk($arr_ini_set, create_function('$v, $k', 'ini_set($k, $v);'));
define('PAS_MINUTE', 1);
/**
 * Fonction de modification de la date des fichiers.
 *
 * @param $str_repertoire - string - IN - Le répertoire à traiter.
 * @param &$arr_info - array of integer - OUT - Le résumé des opérations.
 */
function ordering($str_repertoire, &$arr_info = NULL)
{
    if (is_null($arr_info))
    {
        $arr_info = array();
        $arr_info['repertoire'] = $arr_info['fichier'] = $arr_info['erreur'] = 0;
    }
    if (is_dir($str_repertoire))
    {
        // On récupère la liste des fichiers du répertoire.
        $arr_str_repertoire = $arr_str_fichier = array();
        $str_repertoire = rtrim($str_repertoire, '/\\').DIRECTORY_SEPARATOR.'*';
        $arr_str_glob = glob($str_repertoire);
        if ($arr_str_glob)
        {
            // Parcours des fichiers du répertoire.
            foreach ($arr_str_glob as $str_glob)
            {
                if (is_dir($str_glob))
                {
                    $arr_str_repertoire[] = $str_glob;
                }
                elseif (is_file($str_glob))
                {
                    $arr_str_fichier[] = $str_glob;
                }
            }
            // Tri des fichiers du répertoires.
            natcasesort($arr_str_repertoire);
            natcasesort($arr_str_fichier);
            $ii = 0;
            // On fixe une date croissante aux répertoires.
            foreach ($arr_str_repertoire as $str_repertoire)
            {
                $int_timestamp = mktime(0, $ii, 0, 1, 1, date('Y'));
                if (@touch($str_repertoire, $int_timestamp))
                {
                    $arr_info['repertoire']++;
                }
                else
                {
                    $arr_info['erreur']++;
                }
                //echo '*',$str_repertoire,PHP_EOL;
                $ii += PAS_MINUTE;
            }
            // Puis on continue avec les fichiers simples.
            foreach ($arr_str_fichier as $str_fichier)
            {
                $int_timestamp = mktime(0, $ii, 0, 1, 1, date('Y'));
                if (@touch($str_fichier, $int_timestamp))
                {
                    $arr_info['fichier']++;
                }
                else
                {
                    $arr_info['erreur']++;
                }
                $ii += PAS_MINUTE;
            }
            // On lance la récursion sur les répertoires trouvés.
            foreach ($arr_str_repertoire as $str_repertoire)
            {
                $str_callback = __FUNCTION__;
                $str_callback($str_repertoire, $arr_info);
            }
        }
    }
}
/**
 * Fonction main()
 */
function main()
{
    echo '<pre>Debut a ',date('H:i:s'),PHP_EOL;
    //ordering(dirname(__FILE__), $arr_info);
    ordering(dirname(__FILE__), $arr_info);
    var_dump($arr_info);
    echo 'Fin a ',date('H:i:s'),PHP_EOL,'</pre>';
}
main();
echo '<hr />';
highlight_file(__FILE__);