PHP abfrage mehrerer server in eine cache-datei speichern

Blackbenji

Lieutenant
Registriert
Nov. 2009
Beiträge
565
hallo,

auf basis folgendem tutorials habe ich die idee der cache-datei übernommen:

http://www.developers-guide.net/c/165-simples-caching-system-mittels-dateien.html

daraus ergibt sich zum schreiben bzw lesen des files folgender aufruf:

PHP:
if ( ($sContent = $oCache -> readCache($sCacheName)) === false) {
	$sContent = "Inhalt";
	$oCache -> writeCache($sCacheName, $sContent);
	echo 'Der Cache-Eintrag zu ' . $sCacheName . ' existiert nicht (mehr) und wurde daher neu angelegt.<br />';
}


nun möchte ich einige server urls auf up & running bzw test failed untersuchen.
das mache ich so:

PHP:
	for($x=0; $x<count($url_array); $x++) {
		$url = $url_array[$x];
		if(get_http_response_code($url) != "503") {
			$code = file_get_contents($url);
			if(stristr($code, 'Up and running') === FALSE) {
				echo "<font color='red'><a href='".$url."' target='_blank'>".$url."</a> Test failed! <br /></font>";
			} elseif(stristr($code, '503 Service Temporarily Unavailable')) {
				echo "<font color='red'><a href='".$url."' target='_blank'>".$url."</a> 503 Service Temporarily Unavailable <br /></font>";
			} else {
				echo "<a href='".$url."' target='_blank'>".$url."</a> up & running! <br />";
			}
		} else {
			echo "<font color='red'><a href='".$url."' target='_blank'>".$url."</a> 503 Service Temporarily Unavailable <br /></font>";
		}
	}

das funktioniert.

mein problem ist nun, wie kombiniere ich beides?
$sContent muss eine variable oder ein string sein ...

über einen denkanstoß würde ich mich freuen!
 
Mich stören ganz andere Dinge..

- Variablen-Zuweisung im if-Konstrukt unterlassen
- Arrays mittels foreach iterieren
- Bei einer String-Suche ist strpos, stristr vorzuziehen

Aber bis auf den ersten Punkt, alles nur optionale Performance-Optimierung..
 
@ice-breaker: danke, aber das hilft mir nicht weiter.
@JackFox: danke für die anhaltspunkte, werde ich angehen sobald mein eigentliches problem sich gelöst hat.


Code:
    for($x=0; $x<count($url_array); $x++) {
    $url = $url_array[$x];
    if(get_http_response_code($url) != "503") {
    $code = file_get_contents($url);
    if(stristr($code, 'Up and running') === FALSE) {
    echo "<font color='red'><a href='".$url."' target='_blank'>".$url."</a> Test failed! <br /></font>";
    } elseif(stristr($code, '503 Service Temporarily Unavailable')) {
    echo "<font color='red'><a href='".$url."' target='_blank'>".$url."</a> 503 Service Temporarily Unavailable <br /></font>";
    } else {
    echo "<a href='".$url."' target='_blank'>".$url."</a> up & running! <br />";
    }
    } else {
    echo "<font color='red'><a href='".$url."' target='_blank'>".$url."</a> 503 Service Temporarily Unavailable <br /></font>";
    }
    }

liefert mir bereits das richtige ergebnis.

wie kriege ich den inhalt der for schleife nun in eine variable, damit das cache-script das file richtig generiert?

$bla = check($url_array); zeigt zwar den inhalt an, lässt sich aber nicht weiter verarbeiten :(
 
Ich verstehe das Problem immer noch nicht.

Was genau verstehst du unter "liefert Ergebnis" und "lässt sich aber nicht weiter verarbeiten"?

Ist der Code von dir da in einer Funktion? Dann muss diese das "Ergebnis" natuerlich nicht (nur) ausgeben (echo), sondern auch zurueckgeben (return). Meinst du das? Generell kann/sollte man auch da schon Ausgabe von Logik etwas trennen.
 
Zuletzt bearbeitet:
Zurück
Oben