Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]filemtime, filectime, filesize, warningi
gutek84
post 23.07.2008, 12:46:33
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 4
Dołączył: 9.10.2007
Skąd: Morąg

Ostrzeżenie: (0%)
-----


Witam!

Mam problem z w/w funkcjami. Mam klasę która tworzy mi plik CSV dla podanej sciezki. Wywołanie:
  1. <?php
  2. $A = new A();
  3. $A->stworzCSV(".");
  4. ?>

Dla katalogu głównego (sciezka '.') plik CSV generuje się prawidlowo i wyglada tak:

Kod
C:\Program Files\WebServ\httpd
.,d,0B,2008-07-07 14:03:43,2008-07-23 11:59:11
..,d,0B,2008-07-07 14:03:39,2008-07-07 14:04:02
class,d,0B,2008-07-23 08:57:14,2008-07-23 09:35:11
index.php,f,105B,2008-07-07 14:09:49,2008-07-23 12:40:48
plik.csv,f,1.28kB,2008-07-23 11:44:56,2008-07-23 12:40:18
strona_tyt22.zip,f,714.15kB,2008-06-02 09:23:15,2008-06-02 09:23:15
stronka,d,0B,2008-07-23 08:56:44,2008-07-23 08:56:56
Thumbs.db,f,4.5kB,2008-07-07 14:08:07,2008-07-07 14:08:08


Natomiast gdy próbuje wywołać ją dla katalogu podrzędnego(sciezka 'stronka') dostaje warningi:

  1. <?php
  2. $A = new A();
  3. $A->stworzCSV("./stronka");
  4. ?>


Kod
Warning: filesize() [function.filesize]: stat failed for img in C:\Program Files\WebServ\httpd\class\A.class.php on line 21

Warning: filectime() [function.filectime]: stat failed for img in C:\Program Files\WebServ\httpd\class\A.class.php on line 34

Warning: filemtime() [function.filemtime]: stat failed for img in C:\Program Files\WebServ\httpd\class\A.class.php on line 39


img jest katalogiem, a rozpoznawany jest jako plik przez is_dir()
dla podkatalogu class w katalogu stronka informacje wyswietlane sa poprawnie, tak samo dla . i .. oraz dla plików znajdujących sie w katalogu

Plik CSV wyglada nastepująco:

Kod
C:\Program Files\WebServ\httpd\stronka
.,d,0B,2008-07-07 14:03:43,2008-07-23 11:59:11
..,d,0B,2008-07-07 14:03:39,2008-07-07 14:04:02
class,d,0B,2008-07-23 08:57:14,2008-07-23 09:35:11
img,f,B,1970-01-01 01:00:00,1970-01-01 01:00:00
index.php,f,113B,2008-07-07 14:09:49,2008-07-23 13:32:49
lib,f,B,1970-01-01 01:00:00,1970-01-01 01:00:00
smarty,f,B,1970-01-01 01:00:00,1970-01-01 01:00:00
templates,f,B,1970-01-01 01:00:00,1970-01-01 01:00:00
templates_c,f,B,1970-01-01 01:00:00,1970-01-01 01:00:00


Klasa CSV

  1. <?php
  2. //Klasa generująca plik CSV
  3. class A{
  4. //zmienne dostępne publicznie
  5. public $data = array();
  6. //zmienne dostępne wewnątrz klasy
  7. private $uchwyt;
  8. private $plik;
  9.  
  10. //funkcja zamieniająca bierzący katalog na tablice zawierająca informacje o plikac
    h i katalogach oraz ich nazwy
  11. private function Dir2array($sciezka){
  12. if ($this->uchwyt = opendir($sciezka)) {
  13. while (false !== ($this->plik = readdir($this->uchwyt))) { 
  14. $this->data[] = $this->plik.','.$this->spr().','.$this->RozmiarPliku().','.$this->stworzono().','.$this->zmodyfikowano();
  15. }
  16. closedir($this->uchwyt); 
  17. }
  18. }
  19. //funkcja zwracająca rozmiar pliku i zamienijąca go na postać przyjazną dla człowi
    eka
  20. private function RozmiarPliku(){
  21. $rozmiar=filesize($this->plik);
  22.  
  23. if($rozmiar < 1024){
  24. return $rozmiar_pliku = $rozmiar.'B';
  25. }
  26. elseif($rozmiar > 1024 && $rozmiar < 1024*1024){
  27. return $rozmiar_pliku = round(($rozmiar/1024),2).'kB';
  28. }elseif($rozmiar > 1024*1024){
  29. return $rozmiar_pliku = round(($rozmiar/(1024*1024)),2).'MB';
  30. }
  31. }
  32. //funkcja zwracająca datę stworzenia pliku
  33. private function stworzono(){
  34. return rtrim (date("Y-m-d H:i:s.", filectime($this->plik)),'.');
  35. }
  36.  
  37. //funkcja zwracająca datę modyfikacji pliku
  38. private function zmodyfikowano(){
  39. return rtrim (date("Y-m-d H:i:s.", filemtime($this->plik)),'.');
  40. }
  41.  
  42. private function spr(){
  43. $spr = is_dir($this->plik);
  44. if($spr==TRUE){
  45. return 'd';
  46. }else{
  47. return 'f';
  48. }
  49. }
  50.  
  51. public function stworzCSV($sciezka){
  52. $this->Dir2array($sciezka);
  53. $uchwyt=fopen("plik.csv","w+");
  54. fwrite($uchwyt,realpath($sciezka)."\n");
  55. foreach($this->data as $zapisz){
  56. fwrite($uchwyt,$zapisz."\n");
  57. }
  58. fclose($uchwyt);
  59. }
  60.  
  61. //koniec
  62. }
  63. ?>


Jeśli masz jakiś pomysł to proszę o pomoc.
pozdrawiam
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:24