22bd57c06e09a3bfcf86408f33b388d35c0d236e
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
6 * Copyright (c) 2001-2019 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
14 * Gestion de l'action calculer_taille_cache
16 * @package SPIP\Core\Cache
18 if (!defined('_ECRIRE_INC_VERSION')) {
24 * Calculer la taille du cache ou du cache image pour l'afficher en ajax sur la page d'admin de SPIP
26 * Si l'argument reçu est 'images', c'est la taille du cache _DIR_VAR qui est calculé,
27 * sinon celle du cache des squelettes (approximation)
29 * @param string|null $arg
30 * Argument attendu. En absence utilise l'argument
31 * de l'action sécurisée.
33 function action_calculer_taille_cache_dist($arg = null) {
35 $securiser_action = charger_fonction('securiser_action', 'inc');
36 $arg = $securiser_action();
38 include_spip('inc/filtres');
40 if ($arg == 'images') {
41 $taille = calculer_taille_dossier(_DIR_VAR
);
42 $res = _T('ecrire:taille_cache_image',
44 'dir' => joli_repertoire(_DIR_VAR
),
45 'taille' => "<b>" . (taille_en_octets($taille) > 0 ?
taille_en_octets($taille) : "0 octet") . "</b>"
49 include_spip('inc/invalideur');
51 calculer_taille_dossier(_DIR_CACHE_XML
)
52 +
calculer_taille_dossier(_DIR_CACHE
. 'skel/')
53 +
calculer_taille_dossier(_DIR_CACHE
. 'wheels/')
54 +
calculer_taille_dossier(_DIR_CACHE
. 'contextes/');
55 $taille +
= intval(taille_du_cache());
56 if ($taille <= 150000) {
57 $res = _T('taille_cache_vide');
58 } elseif ($taille <= 1024 * 1024) {
59 $res = _T('taille_cache_moins_de', array('octets' => taille_en_octets(1024 * 1024)));
61 $res = _T('taille_cache_octets', array('octets' => taille_en_octets($taille)));
72 * Calculer la taille d'un dossier, sous dossiers inclus
74 * @param string $dir Répertoire dont on souhaite évaluer la taille
75 * @return int Taille en octets
77 function calculer_taille_dossier($dir) {
78 if (!is_dir($dir) or !is_readable($dir)) {
81 $handle = opendir($dir);
86 while (($fichier = @readdir
($handle)) !== false) {
87 // Eviter ".", "..", ".htaccess", etc.
88 if ($fichier[0] == '.') {
91 if (is_file($d = "$dir/$fichier")) {
92 $taille +
= filesize($d);
95 $taille +
= calculer_taille_dossier($d);