Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> glob() vs. RecursiveDirectoryIterator
Athlan
post 29.06.2008, 12:57:35
Post #1





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Witam. Dziś miałem pad serwisu związany z podliczaniem plików sesji w celu wyświetlenia liczby online.

Skrypt prezentował się bardzo prosto:

  1. <?php
  2. protected function _count()
  3. {
  4. $iSessions = 0;
  5.  
  6. foreach(glob(V_VAR_SESSION . '*') as $sFile)
  7. if((filemtime($sFile) + 600) > time())
  8. ++$iSessions;
  9.  
  10. return $iSessions;
  11. }
  12. ?>


Funkcję glob() zamieniłem na RecursiveDirectoryIterator osadzony (aby sprawdzał pliki rekurencyjnie) w RecursiveIteratorIterator:

  1. <?php
  2. protected function _count()
  3. {
  4. $iSessions = 0;
  5.  
  6. foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator(V_VAR_SESSION)) as $oFile)
  7. if(($oFile->getMTime() + 600) > time())
  8. ++$iSessions;
  9.  
  10. return $iSessions;
  11. }
  12. ?>


Po wykonaniu
Kod
/etc/init.d/apache restart
serwer wstał blinksmiley.gif Właściwie nie wiem dlaczego. Dość dokładnie obserwowałem dyskusję w komentarzach na php.net, ale nie znalazłem odpowiedzi.

Jeżeli ktoś ma jakieś info, proszę się wypowiadać.


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
revyag
post 29.06.2008, 13:22:48
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


  1. <?php
  2. foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator(V_VAR_SESSION)) as $oFile)
  3. ?>


dawno nie używałem, ale to się robi raczej tak:
  1. <?php
  2. $oIt = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(V_VAR_SESSION));
  3. foreach($oIter as $oFile) {
  4. }
  5. ?>


--------------------
-------------

------
Go to the top of the page
+Quote Post
Athlan
post 29.06.2008, 13:32:34
Post #3





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


a ) Twój kod nie będzie działał, bo pomyliłeś zmienne
b ) w przypadku tej klasy, wynik z konstruktora jest zwracany, więc co za różnica
c ) mój kod działa, pytanie było inne cool.gif


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
revyag
post 29.06.2008, 13:38:05
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


Pomyliłem zmienne bo mi się tak napisało, ale chyba wiesz że to literówka w kodzie smile.gif

Różnica jest taka że tworzysz obiekt raz, a Twoim przypadku robisz to wiele razy aż będzie koniec iteracji. W pierwszej chwili myślałem że po prostu Ci się zapętla, ale jeśli tak nie jest to nie wiem smile.gif


--------------------
-------------

------
Go to the top of the page
+Quote Post

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: 24.07.2025 - 20:40