Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: dir
 
 автор: cccp   (16.09.2005 в 14:26)   письмо автору
 
 

$d = dir


Я установил один скрипт который читает с помощью функции $d = dir репертуары, количество и вес. Но так как я его поставил в одну из папок, то за место того что бы он находил 225 файлов, он теперь видет 7.
Как сделать так что бы он читая репертуары вернулся на папку выше и лиш тогда стал читать?

   
 
 автор: cheops   (16.09.2005 в 19:19)   письмо автору
 
   для: cccp   (16.09.2005 в 14:26)
 

Не очень понятно, вы используете класс dir? Не могли бы вы привести пример, как вы его используете?

   
 
 автор: cccp   (16.09.2005 в 22:33)   письмо автору
 
   для: cheops   (16.09.2005 в 19:19)
 


<?php

$HOSTNAME
="";
$USERNAME="";
$PASSWORD="";
$DATABASE="";
$maxtaille 1024 40000;

$byteUnits = array('Octets''Ko''Mo''Go');

function 
PMA_formatByteDown($value$limes 6$comma 0)
{
    
$dh           pow(10$comma);
    
$li           pow(10$limes);
    
$return_value $value;
    
$unit         $GLOBALS['byteUnits'][0];

    if (
$value >= $li*1000000) {
        
$value round($value/(1073741824/$dh))/$dh;
        
$unit  $GLOBALS['byteUnits'][3];
    }
    else if (
$value >= $li*1000) {
        
$value round($value/(1048576/$dh))/$dh;
        
$unit  $GLOBALS['byteUnits'][2];
    }
    else if (
$value >= $li) {
        
$value round($value/(1024/$dh))/$dh;
        
$unit  $GLOBALS['byteUnits'][1];
    }
    if (
$unit != $GLOBALS['byteUnits'][0]) {
        
$return_value number_format($value$comma
            
$GLOBALS['number_decimal_separator'], 
            
$GLOBALS['number_thousands_separator']);
    } else {
        
$return_value number_format($value0
            
$GLOBALS['number_decimal_separator'], 
            
$GLOBALS['number_thousands_separator']);
    }

    return array(
$return_value$unit);
// end of the 'PMA_formatByteDown' function

function rep($nom)
{
    
$nbTab=str_repeat("|----",substr_count($nom,"/"));
    
$nom1=eregi_replace("^[.][a-z0-9/ ]*/",$nbTab,$nom);
    global 
$nbre;
    global 
$tailletot;
    
$d dir($nom);
    
$tailleRep=0;
    
$nbRep=0;
    while(
$entry=$d->read())
    {
        
$taille = @filesize($nom "/" $entry);
        
$type = @filetype($nom "/" $entry);
        if (
$type != "dir")
        {
            
$tailletot $tailletot $taille;
            
$nbre $nbre 1;
            
$tailleRep+=$taille;
            
$nbRep++;
        }
    }
    
$d dir($nom);
    
$tailleRep=number_format($tailleRep,'0',',',' ');
    
$nbRep=number_format($nbRep,'0',',',' ');
    while(
$entry=$d->read())
    {
        
$taille = @filesize($nom "/" $entry);
        
$type = @filetype($nom "/" $entry);
        if (
$type == "dir")
        {
            if (
$entry != "." AND $entry != "..")
            {
                
$reps[]=$nom "/" $entry;
            }
        }
    }
    if (isset(
$reps)) {
        
natcasesort($reps);
        foreach (
$reps as $v) {
            
rep($v);
        }
    }
    
//rep($nom . "/" . $entry);
}

$db mysql_connect($HOSTNAME$USERNAME $PASSWORD );
mysql_select_db($DATABASE,$db);

$local_query "SHOW TABLE STATUS FROM $DATABASE";
$result      mysql_query($local_query);
$nbTables=0;
if (
$result != FALSE && mysql_num_rows($result) > 0) {
    while (
$sts_tmp mysql_fetch_array($result)) {
        
$tables[] = $sts_tmp;
        
$nbTables++;
    }
    
mysql_free_result($result);
}

?>

   
 
 автор: cheops   (17.09.2005 в 01:12)   письмо автору
 
   для: cccp   (16.09.2005 в 22:33)
 

Но ведь функция rep(), в которой используется dir нигде не вызывается?!

   
 
 автор: cccp   (17.09.2005 в 10:00)   письмо автору
 
   для: cheops   (17.09.2005 в 01:12)
 

а тут?


<?php
        $d 
dir(".");
        global 
$nbre;
        global 
$tailletot;
        
$nbre 0;
        
$tailletot 0;
        
rep(".");
?>



<?php

$temp1 
number_format($nbre,'0',',',' ');
$temp2 number_format($tailletot,'0',',',' ');
echo 
"<div align='left'><img src='../images/pie-chart_view.gif'> <font color='#CC0000'>Trouv&#233; </font>$temp1<font color='#CC0000'> fichiers<BR>d'une taille totale de </font>$temp2<font color='#CC0000'> octets.<hr></font></div>";
$temp1 number_format($maxtaille $tailletot,'0',',',' ');
echo 
"<div align='left'><img src='../images/pie-chart-libre.gif'> <font color='#CC0000'>Il vous reste </font>$temp1<font color='#CC0000'> octets.<BR><hr></font></div>";
$s_tot+=$tailletot;
$s_libre=$maxtaille $s_tot;
list(
$s_tot,$s_tot_u)=PMA_formatByteDown($s_tot,3,1);
$s_tot="$s_tot $s_tot_u";
list(
$s_libre,$s_libre_u)=PMA_formatByteDown($s_libre,3,1);
$s_libre="$s_libre $s_libre_u";

?>

   
 
 автор: cheops   (17.09.2005 в 13:02)   письмо автору
 
   для: cccp   (17.09.2005 в 10:00)
 

У вас в функции rep() имеет участок кода
<?php
     
if ($type != "dir"
        { 
            
$tailletot $tailletot $taille
            
$nbre $nbre 1
            
$tailleRep+=$taille
            
$nbRep++; 
        }
?>

Т.е. вы учитываете только директории? А вообще каково назначение функций и какаую задачу они решают?

   
 
 автор: cccp   (20.09.2005 в 12:29)   письмо автору
 
   для: cheops   (17.09.2005 в 13:02)
 

Привет!
Извеняюсь что не смог сразу ответить.

Назначение этой функции и задача проста. Это скрипт который читает размер использованного и свободного места твоего сайта на сервере.

Только вот я всё-же не пойму как-же мне сделать что бы он читал с самого корня?

Спасибо за подмогу, товарищи!

   
 
 автор: cheops   (20.09.2005 в 17:31)   письмо автору
 
   для: cccp   (20.09.2005 в 12:29)
 

Нужно указать корневую директорию / - только скорее всего у вас прав доступа не будет, чтобы залезть во все директории сервера.

   
 
 автор: cccp   (20.09.2005 в 19:33)   письмо автору
 
   для: cheops   (20.09.2005 в 17:31)
 

Хочу попробовать.
Только как?
Вот так?


<?php 
     
if ($type != "../../dir"
        { 
            
$tailletot $tailletot $taille
            
$nbre $nbre 1
            
$tailleRep+=$taille
            
$nbRep++; 
        } 
?>

   
 
 автор: cheops   (21.09.2005 в 00:49)   письмо автору
 
   для: cccp   (20.09.2005 в 19:33)
 

Хм... а что это за блок и откуда?

   
 
 автор: cccp   (21.09.2005 в 06:07)   письмо автору
 
   для: cheops   (21.09.2005 в 00:49)
 

Объястняю...

Этот скрипт я поставил в одну из папок на сервере , а не в корень.
И поэтому он стал мне показывать не правельное количество файлов, соответственно и их размер, размер свободного места и использованного.
А когда он стоял в корне сервера моего сайта, то всё было ОК.

   
 
 автор: Lenux   (21.09.2005 в 07:36)   письмо автору
 
   для: cccp   (21.09.2005 в 06:07)
 

Там где у вас if($type!='../../dir') {} Нельзя использовать функцию dir? TRUE если дир. существует, FALSE если такой диретктории нету.

   
 
 автор: cccp   (21.09.2005 в 13:11)   письмо автору
 
   для: Lenux   (21.09.2005 в 07:36)
 

Ну и как-же сделать....непойму???

   
 
 автор: cccp   (23.09.2005 в 11:41)   письмо автору
 
   для: cccp   (21.09.2005 в 13:11)
 

Ну-товарищи ....
Помогите пожалуста.

   
 
 автор: cccp   (25.09.2005 в 02:18)   письмо автору
 
   для: cccp   (23.09.2005 в 11:41)
 

please....!

   
 
 автор: glsv (Дизайнер)   (25.09.2005 в 07:10)   письмо автору
 
   для: cccp   (25.09.2005 в 02:18)
 

Поместил в поддиректорию виртуального хоста. Заработало правильно, когда изменил rep(".") на rep("../")


<?
$d 
dir("."); 
global 
$nbre
global 
$tailletot
$nbre 0
$tailletot 0
rep("../");
?>

   
 
 автор: cccp   (25.09.2005 в 15:18)   письмо автору
 
   для: glsv (Дизайнер)   (25.09.2005 в 07:10)
 

Спасибо ОГРОМНОЕ !!!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования