php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.02.2005, 20:58  
Gast
 
Beiträge: n/a
Standard Apache timeout bei einem Cron mit riesiger Datenmenge

Hi,

ich betreibe eine Site zu einem Online-Rollenspiel, welches die möglichkeit anbietet, alle Daten von Spielergilden als XML anzeigen zu lassen.

Nun möchte ich auf meiner Seite alle Daten in einer DB speichern und das Script welches die Daten ausließt als Cron laufen lassen.

Problem: es sind genau 39.725 XML-Dateien.

Jedesmal die XML-Datei öffnen, parsen und dann eintragen ist sehr zeitaufwendig. Der Apache von meinem Webspace hat eine maximale Scriptbearbeitungszeit von 5 min. Wohl gemerkt der Apache.

Der Provider selber bietet mir keinen Crons an, deswegen muß ich den Cron über einen externen Server laufen lassen. Da fürht zu dem Problem das ich nicht alle 5 min einen weiteren Cron laufen lassen möchte, damit evtl schritt für schritt alle Daten bearbeitet werden.

Nun bin ich echt stark am grübeln wie ich das problem aus der welt schaffe. Eine refresh würde ja nichts bringen, weil der Cron ja ohne browser unterwegs ist. set_time_limit(0); setzt nur den timeout von PHP auf unendlich und nicht den von Apache.
Mir ist klar, das es diese Timeout-Funktion nicht nur gibt, um den User zu ärgern.

Wäre es vielleicht eine alternative, die Dateien erstmal herunterzuladen und dann im Internen Filesystem zu pasren, dadurch dürfte die bearbeitungszeit ja dratisch verkürtzt werden. Allerdings wüsste ich nicht wie man Dateien per PHP herunterladen könnte um sie dann lokal zu speichern.

Ein paar lösungsvorschläge würden mir sehr helfen

bye Oecken
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.02.2005, 23:05  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

was spricht gegen mehrere cronjobs nacheinander? bzw vieleicht lassen sich ja die scripte noch optimieren die die xml-dateien erstellen? Sollte ein eigener server zur verfügung stehen,oder siehts mit shellzugriff aus und vieleicht einem non-php-script/programm, das die verarbeitetung schneller schafft und vor allem das timeout-problem umgeht.

dateien runterladen vom webserver auf den lokalen rechner und wieder hochladen hört sich so man manueller sache an, wenn du in der richtung was machen willst, da lässt sich sicher was machen, aber jenachdem wie groß das ganze wird, hast du ne menge traffik hoch und runter.

soltle kein eigener root-server zur verfügung stehen sollte vieleicht auch in der richtung gedacht werden ne eigene maschine anzuschaffen, wo man frei schalten und walten kann.

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 25.02.2005, 16:27  
Gast
 
Beiträge: n/a
Standard

ja da ist das Problem das es halt nur Webspace bei HE ist.
Ich denke auch dass ich nicht drumrumm kommen werde, mir dafür einen eigenen Server anzuschaffen, habe auch schon angebote die sich im selben Preisniveau befinden.

Habe das Script nun so angepasst, das ein flasg "beabreitet" auf 1 gesetzt wird, so kann man den cron mehrmals nacheinander laufen lassen.

HE bietet leider keine crons an, und dafür geld auszugeben finde ich ziemlich mies.
  Mit Zitat antworten
Alt 25.02.2005, 16:30  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

crons im 5 minutentakt kostenlos gits auf cronjob.de hast keine garantie dass sie laufen, aber ich hab seit mehr als 2 monaten dort einen laufen und der läuft stabil ohne ausfälle.
robo47 ist offline   Mit Zitat antworten
Alt 25.02.2005, 19:52  
Gast
 
Beiträge: n/a
Standard Re: Apache timeout bei einem Cron mit riesiger Datenmenge

Zitat:
Zitat von Oecken
Problem: es sind genau 39.725 XML-Dateien.
Fast 40.000 File in einem (?) Verzeichnis? Damit kannste auch Linux töten...
Zitat:
Jedesmal die XML-Datei öffnen, parsen und dann eintragen ist sehr zeitaufwendig.
Na klar ist das umständlich, ein so dermaßen mieses Konzept nachträglich zu korrigieren.

Kannste den Schrott nicht per FTP saugen und erst mal lokal die Datenbank damit zu füttern?

Dann suchste Dir einen ordentlichen Provider, der Dir dann das SQL Exportfile Deiner lokalen Datenbank in die neue Datenbank auf der Kommandozeile importiert.
  Mit Zitat antworten
Alt 25.02.2005, 20:14  
Erfahrener Benutzer
 
Registriert seit: 20.01.2005
Beiträge: 1.557
PHP-Kenntnisse:
Fortgeschritten
Buhmann ist zur Zeit noch ein unbeschriebenes Blatt
Buhmann eine Nachricht über ICQ schicken Buhmann eine Nachricht über MSN schicken
Standard Re: Apache timeout bei einem Cron mit riesiger Datenmenge

Zitat:
Zitat von Oecken
Hi,

ich betreibe eine Site zu einem Online-Rollenspiel, welches die möglichkeit anbietet, alle Daten von Spielergilden als XML anzeigen zu lassen.[...]
aber warum generierst du die dateien nicht erst dann, wenn sie gebraucht werden?

1. Sind die dann aktueller
2. werden keine xml-dateien erzeugt, die nicht gebraucht werden
3. brauchste dann nur eine datei statt 40.000
Buhmann ist offline   Mit Zitat antworten
Alt 05.03.2005, 00:41  
Gast
 
Beiträge: n/a
Standard

ne das ist anders, die Dateien werden vom Spielbetreiber gestellt. D.H ich lade die XML dateien von einem anderen Server. Das derartig miese Konzept ist also nicht auf meinem mist gewachsen!

Ich habe mir nun ein Dedicated Server (war günstig) zugelegt und kann so den Cron per Kommandozeile abrufen. Meine Frage ist nun ob der apache Timeout (standardmäßig 300 sek) auch über die crontab funktion gilt, oder ob das nichts zur Sache tut.

Wenn es gilt, wie löse ich nun das Problem? Möchte den Apache Timeout net auf 4 Stunden stellen, weil es das ding ja net umsonst gibt.

bye Oecken
  Mit Zitat antworten
Alt 05.03.2005, 00:48  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Oecken
ne das ist anders, die Dateien werden vom Spielbetreiber gestellt. D.H ich lade die XML dateien von einem anderen Server. Das derartig miese Konzept ist also nicht auf meinem mist gewachsen!
Löblich. Und warum tust Du Dir das Gekröse dann trotzdem an? Es klappt doch nicht. Soviel beten kannst Du nicht, daß Windows oder Linux auf einen Schlag mit 39.725 Files hantieren kann.

Tritt den Idioten in die Eier, such Dir 'nen anderen Job oder rede diesen Unfug Deiner Fangemeinde aus. Oder setz Dich mit nackten Arsch in einen Kaktus und frage in einer WHILE Schleife ab, welcher Stachel Dich getroffen haben möge. Alles noch sinnvoller als Deine Frage...
  Mit Zitat antworten
Alt 05.03.2005, 01:03  
Gast
 
Beiträge: n/a
Standard

erstmal muß ich noch etwas korrigieren, ich hatte einen kleinen fehler im script, der mir ne falsche anzahl an dateien ausgab.
Real sind es "nur" um 4.405 Dateien.

Ich brauche die Daten dringend in den Dateien weil darauf ein großer Teil der Seite aufbaut.
  Mit Zitat antworten
Alt 24.03.2005, 13:37  
Gast
 
Beiträge: n/a
Standard JavaScript einsetzen

Ich schreibe in so einen Fall immer ein PHP-Skript welches die Arbeit in verdaubare Portionen aufteilt. Ich lasse das Skript laufen und schreibe dann mit den echo-Befehl ein JavaSript indem ich das PHP-Skript zeitverstzt aufrufe (setTimeout()). Anhand des Parameters den ich beim Aufruf übergebe kann man erkennen was man schon bearbeitet hat. z,B, Könnte man immer 10 Dateien parsen, danach das Php-Skript wieder mit JavaScript aufrufen und den Parameter start=11 übergeben, dann wieder 10 Dateien parsen, danch start=21 usw. bis man alles abgearbeitet hat.
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
php Warnung nach Apache Update PHP Tipps 2005 2 07.02.2005 13:38

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
cronjob timeout, apache timeout, apache php timeout, cronjob php timeout, apache cronjob, timeout apache, apache timeout php, apache script timeout, php cronjob timeout, php apache timeout, cron timeout, apache2 timeout, php script timeout cronjob, chronjob localer apache, apache timeout 5 minuten, php timeouts aufteilen, crontab timeout, cron.d timeouts, der apache timeout, cronjob php apachi

Alle Zeitangaben in WEZ +1. Es ist jetzt 22:33 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.