Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Implementacja iteratora powoduje wyłączenie apache, pozniej serwer nie odpowiada
Wolfie
post
Post #1





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Witam,

Mialem zaimplementowana metode getRow() ktora wygląda nastepująco :

  1. <?php
  2. public function getRow() {
  3.            return mysql_fetch_array($this->result);
  4.        }
  5. [php]
  6.  
  7. Nastepnie wywoływałem wynik w ten sposob :
  8.  
  9. [php]
  10. while($row = $rs->getRow()) {
  11.            echo $row[0]." - ".$row[1];
  12.            echo "<br />\n";
  13.        }
  14. ?>


Nastepnie aby zastapic metode getRow() zaimplementowalem interface iterator posiadający nastepujące metody :

  1. <?php
  2. interface Iterator {
  3.        public function current();
  4.        public function key();
  5.        public function next();
  6.        public function rewind();
  7.        public function valid();
  8.    }
  9. ?>


Ktore wyglądają tak :

  1. <?php
  2. public function current() {
  3.            return $this->currentrow;
  4.        }
  5.        
  6.        public function key() {
  7.            return $this->key;
  8.        }
  9.        
  10.        public function valid() {
  11.            return $this->valid();
  12.        }
  13.        
  14.        public function next() {
  15.            if($this->currentrow = mysql_fetch_array($this->result)) {
  16.                $this->valid = true;
  17.                $this->key++;
  18.            } else {
  19.                $this->valid = false;
  20.            }
  21.        }
  22.        
  23.        public function rewind() {
  24.            if($num = mysql_num_rows($this->result) > 0) {
  25.                if(mysql_data_seek($this->result, 0)) {
  26.                    $this->valid = true;
  27.                    $this->key = 0;
  28.                    $this->currentrow = mysql_fetch_array($this->result);
  29.                }
  30.            } else {
  31.                $this->valid = false;
  32.            }
  33.        }
  34. ?>


Nastepnie aby wyswietlic wynik na ekranie uzylem zamiast petli while i funkcji getRow() petli foreach :

  1. <?php
  2. foreach($rs as $row) {
  3.            echo $row[0]." - ".$row[1];
  4.            echo "<br />\n";
  5.        }
  6. ?>


No i niestety, gdy odpalilem plik index.php serwer apache przestal dzialac wywalajac komunikat windows "serwer http przestał dzialac", zrestartowałem serwer ale kolejna proba wyswietlila strone "przekroczony limit czasu połączeń"......jakim cudem taka implementacja moze zatrzymac prace serwera ?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 22.08.2025 - 22:05