Server : Apache System : Linux webd348.cluster026.gra.hosting.ovh.net 5.15.148-ovh-vps-grsec-zfs-classid #1 SMP Thu Feb 8 09:41:04 UTC 2024 x86_64 User : hednacluml ( 122243) PHP Version : 8.3.9 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl Directory : /home/hednacluml/univers/ecrire/action/ |
<?php /***************************************************************************\ * SPIP, Système de publication pour l'internet * * * * Copyright © avec tendresse depuis 2001 * * Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribué sous licence GNU/GPL. * \***************************************************************************/ /** * Gestion de l'action calculer_taille_cache * * @package SPIP\Core\Cache **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Calculer la taille du cache ou du cache image pour l'afficher en ajax sur la page d'admin de SPIP * * Si l'argument reçu est 'images', c'est la taille du cache _DIR_VAR qui est calculé, * sinon celle du cache des squelettes (approximation) * * @param string|null $arg * Argument attendu. En absence utilise l'argument * de l'action sécurisée. */ function action_calculer_taille_cache_dist($arg = null) { if (is_null($arg)) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } include_spip('inc/filtres'); if ($arg == 'images') { $taille = calculer_taille_dossier(_DIR_VAR); $res = _T( 'ecrire:taille_cache_image', [ 'dir' => joli_repertoire(_DIR_VAR), 'taille' => '<b>' . (taille_en_octets($taille) > 0 ? taille_en_octets($taille) : '0 octet') . '</b>' ] ); } else { include_spip('inc/invalideur'); $taille = calculer_taille_dossier(_DIR_CACHE_XML) + calculer_taille_dossier(_DIR_CACHE . 'skel/') + calculer_taille_dossier(_DIR_CACHE . 'wheels/') + calculer_taille_dossier(_DIR_CACHE . 'contextes/'); $taille += intval(taille_du_cache()); if ($taille <= 150000) { $res = _T('taille_cache_vide'); } elseif ($taille <= 1024 * 1024) { $res = _T('taille_cache_moins_de', ['octets' => taille_en_octets(1024 * 1024)]); } else { $res = _T('taille_cache_octets', ['octets' => taille_en_octets($taille)]); } $res = "<b>$res</b>"; } $res = "<p>$res</p>"; ajax_retour($res); } /** * Calculer la taille d'un dossier, sous dossiers inclus * * @param string $dir Répertoire dont on souhaite évaluer la taille * @return int Taille en octets */ function calculer_taille_dossier($dir) { if (!is_dir($dir) or !is_readable($dir)) { return 0; } $handle = opendir($dir); if (!$handle) { return 0; } $taille = 0; while (($fichier = @readdir($handle)) !== false) { // Eviter ".", "..", ".htaccess", etc. if ($fichier[0] == '.') { continue; } if (is_file($d = "$dir/$fichier")) { $taille += filesize($d); } else { if (is_dir($d)) { $taille += calculer_taille_dossier($d); } } } closedir($handle); return $taille; }