|
|
Thor

: 21.05.2003 : 594 : Sankt Ingbert
|
| : 09.06.2010, 14:40 : include - Fehlermeldung ausblenden |
|
|
Moin,
ich frage in meinem Onlineshop bei einem Lieferanten den Status der Verfügbarkeit der Waren ab. Mittels include
| Code: |
<?php
$arti = $product_info['products_LfStatus'];
if (!empty($arti))
{
ob_start();
include 'http://xxxx.xx/index.php?cl=shproductstock&artnum='.$arti;
$artistatus=ob_get_contents();
ob_end_clean();
echo '<b>Verfügbarkeit: </b>';
echo $artistatus; // hier wird der Text ausgegeben bsp.: Ware wird für Sie bestellt.
}
?> |
Jedoch ist deren Server nicht immer erreichbar oder die Abfrage läuft so langsam das SQL-Fehler oder Timeout angezeigt wird. Das sieht bei den Artikel erstens unschön aus oder führt zu langen Ladezeiten.
Ist es möglich z.B. wenn nach 3 sec. keine Verbindung zustande kommt, einfach nichts anzuzeigen? Also die Verfügbarkeitsanzeige auszuschalten?
Wäre immerhin besser, zeitweise keine Anzeige zu haben, als mir die Kunden zu vergraulen.
Ist dies möglich?
keine |
|
| Nach oben |
|
 |
Synonym

: 09.08.2008 : 3496 : Würzburg
|
| : 09.06.2010, 14:49 : include - Fehlermeldung ausblenden |
|
|
Prinzipiell ja, aber nicht mit include(), zumindest würde ich es da nicht kennen. Nutze doch einfach fsockopen oder curl, beide können Verbindungen prüfen und gegebenenfalls beenden. Dann brauchst Du auch den Umweg über dieses ob_start nicht mehr, denn beide Funktionen liefern den Content direkt zurück und kann somit an eine Variable übergeben werden.
http://php.net/manual/de/ref.curl.php
http://php.net/manual/de/function.fsockopen.php |
|
| Nach oben |
|
 |
Thor

: 21.05.2003 : 594 : Sankt Ingbert
|
| : 09.06.2010, 15:03 : include - Fehlermeldung ausblenden |
|
|
Herzlichen Dank,
habe aber vergessen zu erwähen, in PHP bin ich ein Dau.
Kann nur Codeschnipsel einfügen per copy&paste
Werde aber versuchen mich einzulesen, verstehe aber schon beim überfliegen nur Bahnhof.
PS: PHP5
keine |
|
| Nach oben |
|
 |
Synonym

: 09.08.2008 : 3496 : Würzburg
|
| : 09.06.2010, 15:23 : include - Fehlermeldung ausblenden |
|
|
ok, wenn Du nur Bahnhof verstehst, dann doch wohl eher fsockopen(). Ich finde curl zwar besser und schneller, aber ist auch wesentlich undurchsichtiger.
Ungetestet:
| Code: |
<?php
$arti = $product_info['products_LfStatus'];
if (!empty($arti))
{
$host = 'xxxx.xx';
$fp = fsockopen($host, 80, $errno, $errstr, 30);
if (!$fp)
{
echo "$errstr ($errno)<br />\n";
}
else
{
$artistatus = '';
$out = "GET /index.php?cl=shproductstock&artnum=".$arti." HTTP/1.1\r\n";
$out .= "Host: ".$host."\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp))
{
$artistatus .= fgets($fp, 128);
}
fclose($fp);
echo $artistatus; // hier wird der Text ausgegeben bsp.: Ware wird für Sie bestellt.
}
}
?> |
xxxx.xx ist der Host, ohne http:// 80, der Port.
$errno die Fehlernummer, wenn es eine gibt
$errstr der dazugehörige lesbare String
Die 30 am Ende ist der Timeout des Connects (nicht der Datenübertragung, dafür gibt es den stream_set_timeout() ). Wegen letzterem schau mal hier: http://www.php.net/manual/de/function.stream-set-timeout.php Der Aufbau ist sehr ähnlich. |
|
| Nach oben |
|
 |
Hobby_SEO79

: 20.06.2008 : 1883
|
| : 09.06.2010, 15:52 : include - Fehlermeldung ausblenden |
|
|
Oben ganz am anfang vom php code:
error_reporting(E_ALL); --> Fehler anzeigen
error_reporting(0); --> Fehler nicht anzeigen |
|
| Nach oben |
|
 |
Synonym

: 09.08.2008 : 3496 : Würzburg
|
| : 09.06.2010, 16:08 : include - Fehlermeldung ausblenden |
|
|
@Hobby_SEO79
Und was machst Du, wenn der Zielserver wegen nicht Erreichbarkeit einen Error liefert, der dann wiederum per include eingebunden wird? error_reporting unterdrückt die eigenen Fehler, nicht aber die des externen Servers. |
|
| Nach oben |
|
 |
bond

: 20.06.2008 : 129
|
| : 09.06.2010, 20:55 : include - Fehlermeldung ausblenden |
|
|
Einfach ein „@“ voranstellen, dann gibt es keine Fehlermeldung bei der darauf folgenden Funktion: @include("/pfad/zur/datei");
Zuletzt bearbeitet von bond am 10.06.2010, 13:32, insgesamt einmal bearbeitet |
|
| Nach oben |
|
 |
Thor

: 21.05.2003 : 594 : Sankt Ingbert
|
| : 10.06.2010, 13:31 : include - Fehlermeldung ausblenden |
|
|
danke Euch allen...
@Synonym
besonders dir für die Mühe, es funktioniert noch nicht ganz, werde mich aber in die Geschichte richtig einlesen. Hilft ja nix.
@bond
"@" unterdrückt wirklich die Fehlermeldung, ist erst mal als Notbehelf ausreichend. Danke
keine |
|
| Nach oben |
|
 |