Oneindige loop - Apache crashed
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)
1
2
3
4
5
6
7
8
9
10
11
12
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;
?>
// ................ //
$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)
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
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;
}
?>
// .......... //
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
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
Maar hebben jullie dat ook? Dat apache vast loopt als je in een oneindige lus bent gekomen?
Zou ik even moeten uittesten. De max execution time is toch standaard 30 sec?
Dacht het wel ja
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.
Kan hem op elk moment stoppen met esc zonder dat apache vastloopt.
Eens zien of dat iets oplevert...
Willem-Jan:
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.Tnx!
Maar hebben jullie dat ook? Dat apache vast loopt als je in een oneindige lus bent gekomen?
Maar hebben jullie dat ook? Dat apache vast loopt als je in een oneindige lus bent gekomen?
Weet iemand hoe dat met de hand moet?
poort 8080 is toch standaard?
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.