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).
          
 Moderator
							
						
Comment