Debut a 05:09:56
array(3) {
  ["erreur"]=>
  int(0)
  ["fichier"]=>
  int(123)
  ["repertoire"]=>
  int(4)
}
Fin a 05:09:57

<?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_setcreate_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$ii011date('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$ii011date('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__);