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
 
Start new topic
Odpowiedzi
Wolfie
post
Post #2





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

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


akceleratory ? XDebuger ? Ja narazie sie ucze php, mozna powiedziec ze to moje pierwsze kroki tak naprawde (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

------------------------------------------------------------------
Dziwne jest tez to ze jak wrocilem do porzedniej wersji mojego programu bez uzycia iteratora i petli foreach to i tak wystepuje "Przekroczenie limitu czasu połączen".......jak mozna to naprawic ? (inne projekty normalnie działają )
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: 14.10.2025 - 13:13