Oneindige loop - Apache crashed

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Willem Jan Z

Willem Jan Z

23/02/2006 11:53:00
Quote Anchor link
Bestet mensen,

Heb een probleempje dat nogal op mijn zenuwen begint te werken...

Als ik per ongeluk een oneindige loop maak, loopt mijn Apache vast, tenminste ik kan niks meer van mijn localhost openen, hij blijft dan maar draaien alsof hij nog in die loop zit (terwijl ik al ESC heb gebruikt om script te stoppen).
Ik moet echt bij mijn services Apache2 opnieuw opstarten, wil het weer werken..

Het gaat in die geval om deze stukjes code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
// ................ //
        $results = $DB->query("SELECT Field_Name, Replacement FROM template_fields");
        // De loop
        while($rows = $DB->fetch($results))
        {

            $FileContent = str_replace($rows['Field_Name'],$rows['Replacement'],$FileContent);
        }

            $FileContent = str_replace('{$MENU$}','Menu knoppen uit de database',$FileContent);
        
        return $FileContent;
?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
// .......... //
function query($query)
    {

        global $DB, $LANG;

        if($this->result = @mysql_query($query))
        {

            return $this->result;
        }

        else
        {
            $this->DBerror ='<br />'.$LANG['query_error'].'<br /><b>'.mysql_error().'</b>';
        }

            return $this->DBerror;        

    }

        var
$rows;

    function
fetch($result)
    {

        global $DB, $LANG;

        if($this->rows = @mysql_fetch_array($result))
        {

            return $this->rows;
        }

        else
        {
            $this->DBerror = '<br /><br /><b>'.mysql_error().'</b>';
        }

            return $this->DBerror;
    }

?>


Heeft iemand anders dat ook?
Enn vraag 2, waarom komt hij in een oneindige loop?
Want als ik 'met de hand' de resultaten fetch werkt het wel goed...
Gewijzigd op 23/02/2006 11:56:00 door Willem Jan Z
 
PHP hulp

PHP hulp

04/02/2023 07:15:51
 
Jan Koehoorn

Jan Koehoorn

23/02/2006 11:57:00
Quote Anchor link
in je function "fetch" return je een error als het fout gaat en een result als het goed gaat. Dat betekent dat er altijd iets geretourneerd wordt en dat deze regel

while($rows = $DB->fetch($DB->result))

dus altijd true is.

edit: je kunt het uittesten door geen error te retourneren, maar gewoon false
Gewijzigd op 23/02/2006 11:59:00 door Jan Koehoorn
 
Jelmer -

Jelmer -

23/02/2006 11:59:00
Quote Anchor link
Bij fetch, bij een fout, geef je een string terug. In een WHILE-lus gaat het om true en false. Een string staat voor true, dus zo lang hij fouten geeft, gaat de while lus door. Als je false terug geeft, stopt de lus. Dus ipv een string met de fout kan je beter false terug geven en de error ergens opslaan, en die achteraf echo'en.

edit: jan was eerder ;)
Gewijzigd op 23/02/2006 11:59:00 door Jelmer -
 
Willem Jan Z

Willem Jan Z

23/02/2006 12:03:00
Quote Anchor link
Tnx!
Maar hebben jullie dat ook? Dat apache vast loopt als je in een oneindige lus bent gekomen?
 
Jan Koehoorn

Jan Koehoorn

23/02/2006 12:09:00
Quote Anchor link
Zou ik even moeten uittesten. De max execution time is toch standaard 30 sec?
 
Willem Jan Z

Willem Jan Z

23/02/2006 12:12:00
Quote Anchor link
Dacht het wel ja
 
Jelmer -

Jelmer -

23/02/2006 12:12:00
Quote Anchor link
Mijn niet, had gisteren nog een paar. Maar op esc drukken in de browser (stoppen met laden) hielp goed genoeg. Wel vreemd dat toen mijn schijf plotseling vol was. Blijkbaar had Apache zo'n enorm geheugengebruik dat mijn swap-file was opgezwollen.
 
Jan Koehoorn

Jan Koehoorn

23/02/2006 12:29:00
Quote Anchor link
Net lokaal even deze getest:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    while (true) {
        echo '-';
    }

?>


Kan hem op elk moment stoppen met esc zonder dat apache vastloopt.
 
Willem Jan Z

Willem Jan Z

23/02/2006 12:34:00
Quote Anchor link
Ben de hele server opnieuw aan het installeren, zonder Xampp deze keer.

Eens zien of dat iets oplevert...
 

23/02/2006 12:38:00
Quote Anchor link
Willem-Jan:
Tnx!
Maar hebben jullie dat ook? Dat apache vast loopt als je in een oneindige lus bent gekomen?
Ik heb Apache2 met Arjans tut geïnstalleerd, en ja, soms is hij buggy. Dan echo'et hij niet meer, dat lukt hem niet, en dan moet ik heb stoppen en weer starten (herstarten werkt dan niet). Dat heb ik ook als ik bepaalde dingen via mijn AJAX Console scriptje via shell_exec() wilt uitvoeren. Bij 'cmd' ingevoert te hebben moet ik mijn server stoppen en weer starten.
 
Willem Jan Z

Willem Jan Z

23/02/2006 13:03:00
Quote Anchor link
Daar ben ik nu ook mee bezig, alleen wil ik hem op poort 8080, maar daarom heeft hij hem niet als service geinstalleerd...
Weet iemand hoe dat met de hand moet?
 
Legolas

Legolas

23/02/2006 13:05:00
Quote Anchor link
poort 8080 is toch standaard?
 
Willem Jan Z

Willem Jan Z

23/02/2006 13:07:00
Quote Anchor link
Nee 80 is standaard, maar daar heb ik nu JSP server op staan, en host ik voor school... Dus is 8080 (wat JSP tomcat standaard port is) beetje lastiger.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.