Debut a 10:16:29
array(3) {
["erreur"]=>
int(0)
["fichier"]=>
int(127)
["repertoire"]=>
int(4)
}
Fin a 10:16:30
<?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__);