Performance und No Response

chmee

verstaubtes inventar
Premium-User
Performance und No Response - fopen Time Out

Moin Allesamt.. Zwei Fragen :

1. Was ist performanter, auf einer Seite die MySQL-Connection anfangs öffnen und am Ende schließen oder pro MySQL-Abfrage öffnen/schließen ?

2. Wie kann man es in php umgehen, dass die Site gar nicht angezeigt wird, wenn zB Serverabfragen auf andere Seiten fehlschlagen ?

Seite: bf2.phreekz.de

mfg chmee
 
Zuletzt bearbeitet:
1.) Alle Abfragen über eine Verbindung laufen lassen und diese am Ende des Skriptes schließen (bzw. wird sie beim Ablauf des Skriptes automatisch geschlossen, sofern es keine persistente Verbindung ist).

2.) Wie machst du diese Abfragen? Per fsockopen()?
Dann könntest du ein @ davor setzen und die Timeout Zeit verringern (5. Parameter).
Dadurch wird 1. die Fehlermeldung unterdrückt und zweitens dauert es nicht Jahre (bzw. 30 Sekunden per Standardeinstellung) dass da was passiert.

Aber momentan lädt ja gar nichts bei der Seite.
 
Hier ist die eigentliche Abfrage dargestellt, aber die Seite ist Down:
http://www.bf2monitor.com/index.php?page=statushelp

PHP:
$handle = fopen('http://www.bf2monitor.com/index.php?page=status&pid='.$pid,'rb');
$contents = '';
while (!feof($handle)) {
  $contents .= fread($handle, 1024);
}

Da also die Seite Offline ist - und die Abfrage gleich am Anfang der Source ist, wird garnix dargestellt. So denk ich mir das.

Wie stelle ich denn die TimeOut bei fopen runter ?
bzw. Kann ich einfach auf fsockopen umstellen ? 2. Parameter ist der Port ?

mfg chmee
 
Zuletzt bearbeitet:
Hallo!
Da also die Seite Offline ist - und die Abfrage gleich am Anfang der Source ist, wird garnix dargestellt. So denk ich mir das.
Wenn die Seite offline ist, sollte PHP eigentlich eine Fehlermeldung wegen dem Timeout bei der Ausführungszeit ausspucken (ggf. error_reporting(E_ALL) angeben).

fsockopen() kann, wenn ich mich nicht irre, lediglich prüfen ob ein bestimmter Port auf einem bestimmten Server erreichbar ist.
Ob aber auch die Seite/Datei vorhanden ist, kann man mit fsockopen() nicht prüfen.

Ich bin auch der Meinung dass fopen() die übergebenen Parameter unberücksichtigt lässt.
Für fopen() gibt es keine Einstellung um den Timeout zu begrenzen.
Dieses müssest Du über die PHP Einstellungen ändern, jedoch bezieht sich der Timeout auf die Ausführungszeit des Scripts..... kann also zu unerwünschten Problemen führen.

Gruss Dr Dau
 
Da es 1und1 Hosted ist, also kein eigener Server, könnte es auch sein, dass der Server einfach das Script stoppt, weil es - aufgrund der Nichterreichbarkeit - zuviel Ressourcen schluckt.

Nun, ich werde das Script umschreiben, wenn der Server wieder anspricht.

mfg chmee
 
Zurück