Link und MySql auf Verfügbarkeit prüfen (timeout?)
steve
- php
0 Andavos0 steve0 Andavos
0 Tobias Kloth0 Tom
0 Thomas Luethi0 steve0 Thomas Luethi0 Tom
Hallo Forumler,
Ich habe auf meiner HP per include() eine Datei.php von einem anderen Webspace eingebunden, wenn nun aber der Space down ist, bringt mir include() einen 404-error, und sprengt mein komplettes layout.
Habe folgendes probiert:
$link = "http://www.domain.de/datei.php";
$test = @fopen($link,"r");
if ($test)
{ echo "geht!";}
else
{ echo "geht nicht"; }
gebe ich nun eine
-gültige url an: $test = geht
-ungültige url an: $test = geht nicht
-gültige url die down ist (404) an: $test = geht
das gleiche Problem habe ich mit meiner (Statistik-)MySQL auf dem gleichen Space:
dauert ewig bei schlechter Erreichbarkeit: kann man da nicht irgendwo nen timeout einstellen??
Danke für eure Hilfe...
Steve.
Hallo,
überprüf doch einfach ob es die Datei gibt.
$datei = 'www.123.de';
if(file_exists($datei))
{
}
Ich glaube das bringt mehr
MFG
Andavos
man, wie bescheuert kann man eigentlich sein....
hätte ich ja gleich draufkommen können.
Hauptsache kompliziert !
Danke für die schnelle, einfache und gute Hilfe ;-)
Hallo,
kein Problem ;)
Das ist in PHP halt so, das man vieles umständlich macht.
MFG
Andavos
Hallo Andavos,
$datei = 'www.123.de';
ein "http://" schadet nicht...
if(file_exists($datei))
<zitat src="http://de.php.net/file_exists">
Anmerkung: This function will not work on remote files as the file to be examined must be accessible via the servers filesystem.
</zitat>
auf Deutsch: es funktioniert nur auf dem lokalen Dateiensystem, nicht aber wenn du auf die Datei nur per url zugreifen kannst.
Grüße aus Nürnberg
Tobias
Hallihallo,
überprüf doch einfach ob es die Datei gibt.
$datei = 'www.123.de';
if(file_exists($datei))
{
}
<cite>
Diese Funktion funktioniert nicht bei entfernten Dateien; Die Datei, deren Existenz überprüft werden soll, muss über das Dateisystem des Servers erreichbar sein.
</cite>
Grüße
Tom
Hallo,
Ich habe auf meiner HP per include() eine Datei.php von einem anderen Webspace eingebunden, wenn nun aber der Space down ist, bringt mir include() einen 404-error, und sprengt mein komplettes layout.
Folgendes sollte Dir weiterhelfen:
http://www.dclp-faq.de/q/q-code-links-testen.html
Prinzip: Wenn der HTTP-Status-Code etwas anderes als 200 ist,
zeigst Du lieber nichts an.
include() ist bei fremden Inhalten gefaehrlich,
denn wenn darin PHP-Code ist, wird dieser _bei_Dir_ ausgefuehrt.
Es gibt genuegend andere Mittel, um Text einzubinden/durchzuschleusen,
z.B. readfile() oder fpassthru().
Gruesse,
Thomas
Hallo Thomas,
include() ist bei fremden Inhalten gefaehrlich,
denn wenn darin PHP-Code ist, wird dieser _bei_Dir_ ausgefuehrt.
Es gibt genuegend andere Mittel, um Text einzubinden/durchzuschleusen,
z.B. readfile() oder fpassthru().
schon klar, das sind aber keine "fremde Inhalte" sondern nur mein "Bilder-Server".
Die von mir betreute HP liegt auf puretec, und als der Space zu klein wurde (wg.Party-Bilder einer Discothek) habe ich kurzerhand einen günstigen Space gemietet, und lege da jetzt nur die Bilderverzeichnisse an, und include sie auf die HP.
Also alles im grünen Bereich ;-)
Grüsse und Danke!
Hallo,
schon klar, das sind aber keine "fremde Inhalte" sondern nur mein "Bilder-Server".
Von dem her OK. ;-)
Das Prinzip mit dem HTTP-Status-Code sollte Dir also weiterhelfen,
um zu schauen, ob die Ressource auf dem anderen Server
erreichbar ist.
Gruesse,
Thomas
Hallo,
Bilder würde ich trotzdem nicht mit include() laden.
Unabhängig davon kannst Du das Ergebnis von include() seit PHP 4.23 (doer sogar schon früher) abfragen.
$ok = @include($ressource);
und wenn das nicht geht, kann man die Fehlervariable von PHP abfragen
@include($ressource);
$fehler = $php_errormsg;
Ich habe bisher zwar keine vernünftige Doku darüber gefunden, aber es scheint sich dabei um eine Funktion zu handeln, die sich aber hinter dem Bezeichner $php_errormsg versteckt. Wenn man sie aufruft (ausliest) wird der Wert automatisch auf '' (Leerstring) zurückgestzt.
Wenn also in $fehler nach der erfolgten Zuweisung etwas drinsteht, dann hat include() leider nicht geklappt.
Grüße
Tom