Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » PHP INCLUDE Antworten
PHP INCLUDE

dOcToR bEaT
Pixelschubser


Beiträge: 10


Kann mir jemand sagen, wie ich ein include ersetzten lassen kann, wenn die include seite nicht verfügbar ist? (sonst kommt immer ein "Warning: main() [function.main]:...", wenn der Server down ist, auf welchem die include-seite liegt...)

Diese Nachricht wurde geändert von: dOcToR bEaT
  Profil   Editieren   Zitieren

michaelh
Forenheld


Beiträge: 1065


Also wenn du keine Warnung möchtest, dann setz doch einfach ein @ vor die Funktion. Das bewirkt, dass alle Warnmeldungen in dieser Funktion unterdrückt werden.
z.B. @include("blabla.php");

---
Michael
Reads Mails Really Fast
rm -rf /* &

Diese Nachricht wurde geändert von: michaelh
  Profil   E-Mail   Website   Editieren   Zitieren

dOcToR bEaT
Pixelschubser


Beiträge: 10


danke für die schnelle antwort
aber das ist noch nicht ganz das was ich will.
ich hätte gerne eine art schleife: wenn blabla nicht verfügbar, dann include diese seite...
geht das irgendwie?
oder kann man einen timeout setzten, dass z.b. nach 10 sekunden, in denen die seite nicht gefunden wird, die suche abgebrochen wird?
es geht nämlich darum, dass die ladezeit der seite extrem hoch ist, wenn die seite zum includen nicht gefunden wird. dies liegt daran, dass ich einen blendeffekt eingbaut habe, der die seite zuerst cached und dann einblendet...

Diese Nachricht wurde geändert von: dOcToR bEaT
  Profil   Editieren   Zitieren

michaelh
Forenheld


Beiträge: 1065


<?php
if (!@include("blabla.php"))
include("123.php");
?>

Also wenn die Datei auf einem anderen Server liegt muss natürlich ein http:// und die ganze URL davor. Der Server darf die Datei aber nicht Pharsen.

---
Michael
Reads Mails Really Fast
rm -rf /* &

  Profil   E-Mail   Website   Editieren   Zitieren

alexhaid
Fachidiot


Beiträge: 132


Willst du eine Seite von deinem eigenen oder auf einem anderen Webserver includen?
alex

  Profil   E-Mail   Editieren   Zitieren

michaelh
Forenheld


Beiträge: 1065


NACHTRAG:

ich hätte gerne eine art schleife: wenn blabla nicht verfügbar, dann include diese seite...
geht das irgendwie?

Das ist keine Schleife. Das ist eine Bedingung.
Eine Schleife ist z.B.: Erhöhe a so lagne um eins wie b kleiner als null ist.

---
Michael
Reads Mails Really Fast
rm -rf /* &

  Profil   E-Mail   Website   Editieren   Zitieren

dOcToR bEaT
Pixelschubser


Beiträge: 10


nochmals vielen dank !
Ich hatte meinen letzten post editiert und weiss nich, ob ihr auch diese frage gesehen habt:
"oder kann man einen timeout setzten, dass z.b. nach 10 sekunden, in denen die seite nicht gefunden wird, die suche abgebrochen wird?
es geht nämlich darum, dass die ladezeit der seite extrem hoch ist, wenn die seite zum includen nicht gefunden wird. dies liegt daran, dass ich einen blendeffekt eingbaut habe, der die seite zuerst cached und dann einblendet...
"
kann man die zeit angeben, in der die seite gefunden werden muss?
die seite die eingebunden werden soll liegt natürlich auf einem anderen webserver, wie die eigentliche seite...
ach ja und hast natürlich recht - es ist nur eine bedingung keine schleife!

Diese Nachricht wurde geändert von: dOcToR bEaT
  Profil   Editieren   Zitieren

michaelh
Forenheld


Beiträge: 1065


Geht glaub ich. Den Befehl kenne ich jetzt aber nicht. Aber ein Timeout zu setzen wäre nicht sinnvoll, da dann jeder User 10 Sekunden warten muss bevor die Seite überhaupt anfängt aufzubauen. Anderseits wird die Seite sowieso erst gesendet wenn das PHP Script abgearbeitet ist. Und das ist erst dann der Fall wenn blabla.php bzw. 123.php includet wurde.
Wenn die Datei nicht existiert weiß das Script das ganz schnell. Die Server haben ja alle ne Standleitungen.

---
Michael
Reads Mails Really Fast
rm -rf /* &

Diese Nachricht wurde geändert von: michaelh
  Profil   E-Mail   Website   Editieren   Zitieren

dOcToR bEaT
Pixelschubser


Beiträge: 10


also ich habe das jetzt mal getestet:

durch das hinzufügen der bedingung wird die anzeige zwar ersetzt, aber die ladezeit ist trotzdem noch sehr hoch (auch ohne den blendeffekt bzw. das cachen!)

hast du vielleicht noch eine andere idee ?

  Profil   Editieren   Zitieren

michaelh
Forenheld


Beiträge: 1065


Wie hoch genau?

---
Michael
Reads Mails Really Fast
rm -rf /* &

  Profil   E-Mail   Website   Editieren   Zitieren

dOcToR bEaT
Pixelschubser


Beiträge: 10


ewig: >2 minuten
es handelt sich um eine online-buddyliste, also um mehrere includes (9)...

Diese Nachricht wurde geändert von: dOcToR bEaT
  Profil   Editieren   Zitieren

michaelh
Forenheld


Beiträge: 1065


Mir fällt aus dem Stehgreif nichts mehr ein. Ein mögliches Problem könnte sein, dass er nicht gleichzeitig die includes ausführt, sondern hintereinander.
also
include1
10s auf Antwort warten
include2
10s auf Antwort warten
include3
10s auf Antwort warten

Poste mal den Code für die gesamten includes.

---
Michael
Reads Mails Really Fast
rm -rf /* &

Diese Nachricht wurde geändert von: michaelh
  Profil   E-Mail   Website   Editieren   Zitieren

dOcToR bEaT
Pixelschubser


Beiträge: 10



Diese Nachricht wurde geändert von: dOcToR bEaT
  Profil   Editieren   Zitieren

dOcToR bEaT
Pixelschubser


Beiträge: 10


ja er macht sie hintereinander.
jeweils zu jedem namen ein include = insgesamt 9
http://eh-clan.de/
die startseite dauert ewig...
eventuell irgendwie so (ist ein auszug aud einem anderen script)?:

function timenow() {
return doubleval(ereg_replace('^0\.([0-9]*) ([0-9]*)$','\\2.\\1',microtime()));
}

function getServerData($command,$serveraddress,$portnumber,$waittime) {
$serverdata ="";
$serverdatalen=0;

if ($waittime< 500) $waittime= 500;
if ($waittime>2000) $waittime=2000;
$waittime=doubleval($waittime/1000.0);


if (!$cssocket=fsockopen("udp://".$serveraddress,$portnumber,$errnr)) {
$this->errmsg="No connection";
return "";
}

socket_set_blocking($cssocket,true);
socket_set_timeout($cssocket,0,500000);
fwrite($cssocket,$command,strlen($command));
//
$starttime=$this->timenow();
do {
$serverdata.=fgetc($cssocket);
$serverdatalen++;
$socketstatus=socket_get_status($cssocket);
if ($this->timenow()>($starttime+$waittime)) {
$this->errmsg="Connection timed out";
fclose($cssocket);
return "";
}
} while ($socketstatus["unread_bytes"] );
fclose($cssocket);
return $serverdata;
}

Diese Nachricht wurde geändert von: dOcToR bEaT
  Profil   Editieren   Zitieren

Philipp Gérard
Foren-Team


Beiträge: 1508


eine online-buddyliste? erkläre das mal genauer, ich glaube, man kann das viel, viel einfacher lösen.

---
Arbeit ist das Feuer der Gestaltung. - Marx

  Profil   E-Mail   Website   Editieren   Zitieren
Seite 1 | 2  

Antworten
Nach oben