Hallo Forum, ich brauche Hilfe.
Ich habe mehrere Apache-Server die nur maximal zwei Clients gleichzeitig bedienen dürfen. Ich möchte auf einem extra Server per PHP eine Übersichtsseite darstellen, auf der der Benutzer erkennen kann, welcher der der Apache-Server momentan verfügbar, also nicht mit zwei Clients ausgelastet ist.
Das ganze findet in einer LAN-Umgebung statt, wo viele Clients mehrere Gigabyte große Dateien per HTTP ziehen sollen.
Das Problem ist: Wenn ein dritter Client (das PHP-Script) auf einen der ausgelasteten Apache-Server zugreifen möchte, wird dieser in die Warteschleife gelegt. Das Script hängt nun solange bis alle Apache-Server wieder frei sind, was den ganzen Sinn der Status-Übersichtsseite ja ad absurdum führt. Das Script soll anzeigen, welcher der Server gerade ausgelastet ist und welcher frei ist.
Ich bin noch ein blutiger PHP-Anfänger und habe es bis jetzt mit diesen beiden Funktionen versucht:
Diese Funktion öffnet eine kleine Text-Datei auf dem Sever und vergleicht ihren Inhalt mit einer vorgegebenen Variable.
Diese Funktion überprüft, ob eine bestimmte Datei existenz ist:
Beide Funktionen lassen das Script hängen, wenn einer der Apache-Download-Server ausgelastet ist.
Wie kann ich eine Timeout-Prüfung einbauen, welche die Funktion nach zwei Sekunden mit "return false;" beendet?
oder:
Wie kann ich Apache so konfigurieren, dass dem Client signalisiert, dass dieser sich in einer Warteschleife befindet?
oder:
Gibt es sonst irgendwelche Lösungen zur Realisierung dieser von mir angestrebten Status-Übersichtsseite?
Ich wäre über jede Art der Hilfestellung erfreut und zutiefst dankbar.
Den sachdienlichsten Hinweis würde ich auch gerne mit 15€ entlohnen (PayPal oder Überweisung).
Ich habe mehrere Apache-Server die nur maximal zwei Clients gleichzeitig bedienen dürfen. Ich möchte auf einem extra Server per PHP eine Übersichtsseite darstellen, auf der der Benutzer erkennen kann, welcher der der Apache-Server momentan verfügbar, also nicht mit zwei Clients ausgelastet ist.
Das ganze findet in einer LAN-Umgebung statt, wo viele Clients mehrere Gigabyte große Dateien per HTTP ziehen sollen.
Das Problem ist: Wenn ein dritter Client (das PHP-Script) auf einen der ausgelasteten Apache-Server zugreifen möchte, wird dieser in die Warteschleife gelegt. Das Script hängt nun solange bis alle Apache-Server wieder frei sind, was den ganzen Sinn der Status-Übersichtsseite ja ad absurdum führt. Das Script soll anzeigen, welcher der Server gerade ausgelastet ist und welcher frei ist.
Ich bin noch ein blutiger PHP-Anfänger und habe es bis jetzt mit diesen beiden Funktionen versucht:
Diese Funktion öffnet eine kleine Text-Datei auf dem Sever und vergleicht ihren Inhalt mit einer vorgegebenen Variable.
PHP-Code:
function check($url, $recip) {
$arrText = file($url);
for ($i=0; $i<count($arrText); $i++) {
$text = $text . $arrText[$i];
}
if (eregi($recip, $text)) {
return true;
} else {
return false;
}
PHP-Code:
function check($url, $maximumRedirections = null,
$currentRedirection = 0)
{
$result = false;
set_time_limit(3);
$contents = @file_get_contents($url);
// Check if we need to go somewhere else
if (isset($contents) && is_string($contents))
{
preg_match_all('/<[\s]*meta[\s]*http-equiv="?REFRESH"?'
. '[\s]*content="?[0-9]*;[\s]*URL[\s]*=[\s]*([^>"]*)"?' . '[\s]*[\/]?[\s]*>
/si', $contents, $match);
if (isset($match) && is_array($match) && count($match) == 2
&& count($match[1]) == 1)
{
if (!isset($maximumRedirections) ||
$currentRedirection < $maximumRedirections)
{
return getUrlContents($match[1][0],
$maximumRedirections, ++$currentRedirection);
}
return false;
}
else
{
return true;
}
}
}
Beide Funktionen lassen das Script hängen, wenn einer der Apache-Download-Server ausgelastet ist.
Wie kann ich eine Timeout-Prüfung einbauen, welche die Funktion nach zwei Sekunden mit "return false;" beendet?
oder:
Wie kann ich Apache so konfigurieren, dass dem Client signalisiert, dass dieser sich in einer Warteschleife befindet?
oder:
Gibt es sonst irgendwelche Lösungen zur Realisierung dieser von mir angestrebten Status-Übersichtsseite?
Ich wäre über jede Art der Hilfestellung erfreut und zutiefst dankbar.
Den sachdienlichsten Hinweis würde ich auch gerne mit 15€ entlohnen (PayPal oder Überweisung).
Kommentar