Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: glob() vs. RecursiveDirectoryIterator
Forum PHP.pl > Forum > PHP
Athlan
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ć.
revyag
  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. ?>
Athlan
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
revyag
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.