Script Performence trimmen, eure hilfe

strex

Erfahrenes Mitglied
Hi Leute,

ich betreibe einen größeren OTR (onlinetvrecorder.com) Mirror und benötige jetzt mal eure Hilfe. Nämlich gibt es bei OTR ein script für die Mirror Betreiber, die das Verzeichnis ausliest im dem sich die Dateien befinden und diese mit Link auflistet.

Nun ist es aber so das wir derzeit bei knapp 50-100Leute gleichzeitig ziemliche Probleme mit der Serverlast bekommen.
Nun meine Frage an euch, könnt das wer von euch optimieren bzw. habe ich dran gedacht das nur alle 10min der Ordner neu ausgelesen wird in derzeit das zwischen gespeichert wird. Erst nach 10min wird der ordner erneut ausgelesen.

Um eure Hilfe wäre ich sehr dankbar! Und schon mal eine Danke im vorraus!

grüße strex

PHP:
/************** START CONFIGURATION ****************/

		//set here your path to the otrkey files
		$secretFolderPath = './xxx/';  // e.g. './mySecretFolder/' //do NOT forget the last slash /


		/************** END CONFIGURATION ****************/




	$dir = opendir ($secretFolderPath); 
   //gehe durch das Verzeichnis 
   $fileList = false; 
   while ($entry = readdir($dir)) { 
  
  
       if ($entry == '.htaccess' || $entry == '.' || $entry == '..') continue; 
       //wenn der Eintrag ein OTRKEY ist wird der Name und die Groesse in die Liste eingefuegt 
       if(!is_dir($secretFolderPath.$entry) && ((is_file ($secretFolderPath.$entry) || is_link ($secretFolderPath.$entry)) && (@preg_match("/.[\.a-zA-Z4]{3,7}.otrkey/", $entry, $ary) || @preg_match("/.[\.a-zA-Z4]{3,7}.otrkey{1}".$key."{0,1}$/", $entry, $ary)))){ 
  
               @preg_match("/[0-9a-zA-Z_-]{2,}_([0-9]{2}\.[0-9]{2}\.[0-9]{2})_[0-9]{2}\-[0-9]{2}_[0-9a-zA-Z]{2,}_[0-9]{1,}_TVOON_DE.[\.a-zA-Z4]{3,7}.otrkey/", $entry, $date); 
               $dateAry[$date[1]][] = '<a href="./download.php?f='.$entry.'" onClick="window.open(this.href,\'otrkey_download_window\',\'dependent=yes, width=472,height=313,location=no,menubar=no,resizable=no,scrollbars=no\');return false">'.$entry.'</a><br>'; 
       } 
   } 
   closedir ($dir); 
       krsort($dateAry); 
  
       foreach($dateAry as $date){ 
           $fileList .= '<font>'.key($dateAry).'</font><br>'; 
           next($dateAry); 
       foreach($date as $file){ 
           $fileList .= $file; 
       } 
           $fileList .= "<br>"; 
       }
 
Rein vom Verständnis her.... es gelangen dort ja nur nach einer Benutzeraktion(PHP-Skript) Dateien in den Ordner bzw. werden entfernt.(oder irre ich mich:-()

Anstatt den Ordner auszulesen, dürfte es weitaus ressourcenschonender sein, die Informationen über vorhandene Dateien in einer Datenbank abzulegen und dort bei jeder Benutzeraktion zu aktualisieren.
 
Nein, ein shell script holt derzeit automatisch in intervallen die neuen Dateien per wget vom OTR Master Server.

Derzeit würde es reichen, wenn sich das System nur alle 10min updatet bzw. neue Liste erstellt wird.
 
Dann schreibe die Liste bspw. in eine Datei, und schaue, falls sie benötigt wird, nach, ob die Datei älter als 10min ist....falls nein, liest du sie aus, falls ja, aktualisierst du sie halt.
 
Ja, das wäre eine Möglichkeit. Ich hab mir gedacht das alle 10min wenn das script aufgerufen wird der ordner ausgelesen wird und dies in eine db gespeichert wird. In der restlichen Zeit wird das nur noch aus der DB geholt.

Und jetzt zum Problem, ich bin nicht der super Coder oder so, ich kann nur einfach scripte passend anpassen und bissle rumbasteln. Gegooglt nach sowas habe ich schon aber brauchbars an Code noch nicht gefunden.

Wenn sich einer erbarmen würde:confused:

grüße strex
 
Hmm, gegen Bezahlung, wir müssen erst mal unsere Traffic kosten wieder refinanzieren...Vielleicht findet sich ja hier einen der auch OTR benützt und uns unterstützt, hat ja auch was davon;)
 
Haste ne möglichkeit auf dem Server Cronjobs auszuführen?
wenn ja dann würd ich mir einfach ein kleines Shellscript basteln was einfach alle Ordner Rekursive ausliest und like csv ein Textfile bastelt

und das lieste dann nur noch mit PHP aus
gg oder noch schöner ne kleine Java anwendung *fg*
 
Ich kann dir heute abend ja mal ne kleine JAVA Applikation schreiben welche du dann einfach alle 10 Minuten aufrufst.
Das ding kann ich ja gleich mit ner JDBC Mysql verbindung basteln und das macht entweder nen Update auf die DB oder eben gleich ein DROP Table und neu erstellen der Liste
Was praktisch eigentlich egal ist
Naja ich würd einfach sagen du meldest dich im MSN mal bei mir heute abend
hab nu erstmal Feierabend und fahr heim ;)
 
Zurück