| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

19-07-2005, 08:42
|
|
kosidesign
Newbie
|
|
Registriert seit: Jul 2005
Beiträge: 8
|
|
15.000 Datensätze in Mysql per script aktualisieren
Hallo zusammen,
ich habe ein Problem, sonst würde ich ja hier nicht schreiben.
Also:
Ich habe eine Datenbank mit ca. 160.000 Einträge. Hierfür bekomme ich täglich ein Update, dass heißt ich bekomme eine Textdatei mit ca. 15.000 Datensätzen, wo Änderungen der 160.000 Datensätze vermerkt sind. Also Daten die sich geändert haben, neue Daten und Datensätze die gelöscht werden können. Diese Textdatei lese ich zeilenweise mit einem PHP-Script aus und andere dann die Datenbank. Das heißt eine Schleife mit 15.000 Durchgägnen.
In letzter Zeit ist der Traffic auf meiner Seite angestiegen, sodass immer ca. 200 Besucher auf der Seite sind. Dadurch läuft das Script nicht mehr durch bzw. es bricht ab.
Jetzt meine Frage gibt es eine bessere Möglichkeit die Datensätze zu aktualisieren oder gibt es die Möglichkeit die Datenbank für den Update zu sperren.
Für Lösungsansätze wäre ich euch dankbar.
Ingo
|

19-07-2005, 09:17
|
|
Schnoop
PHP Senior
|
|
Registriert seit: Apr 2003
Beiträge: 1.049
|
|
Wann treffen die Daten ein bzw. wie wichtig ist es das die Daten sofort geupdated werden?
Wenn das ganze relativ entspannt zu sehen ist, würde ich das ganze via Cronjob Nachts machen. Da werden bestimmt keine 200 User auf der Seite sein.
|

19-07-2005, 09:43
|
|
kosidesign
Newbie
|
|
Registriert seit: Jul 2005
Beiträge: 8
|
|
Daran habe ich auch schon gedacht. kann man denn ein php-script per crown job ausführen oder ist es besser ein sql-statments zu schreiben und dieses dann hochzuladen. Jetzt ist es so, das das Programm einen bestimmten Datensatz aus der Datenbank sucht und diesen dann mit delete oder update, insert verändert. Das ganze dauert dann ca. 8 Minuten bis die 15000 Datensätze abgearbeitet sind.
|

19-07-2005, 09:44
|
|
aimbot
PHP Junior
|
|
Registriert seit: Feb 2004
Ort: Lahr - Germany
Beiträge: 779
|
|
mh, mann könnte die änderungen auch verzögern, so das nicht alles auf einmal gemacht wird sondern bspw. alle 20 sekunden n datensätze.
__________________
MfG
aim
Lies mich jetzt!
- OT-Tags-Liebhaber und BB-Code-Einrücker -
|

19-07-2005, 10:19
|
Shurakai
Master  
|
|
Registriert seit: May 2004
Ort: Bergisch Gladbach
Beiträge: 3.090
|
|
Alternativ nicht für alles ne eigene Query. DELETES oder INSERTS, da kann man hervorragend mehrere mit 1 Query einfügen / löschen.
Zu deiner Frage: Um Tabellen zu sperren, schau dir mal LOCK TABLES an.
|

19-07-2005, 11:20
|
|
kosidesign
Newbie
|
|
Registriert seit: Jul 2005
Beiträge: 8
|
|
LOCK TABLES habe ich mir auch schon durchgelesen. Mein Problem ist nur noch, wie kann ich den user Mitteilen, das im Moment die Datenbank gesperrt ist. Ohne diese Mitteilung würder er doch eine Fehlermeldung bekommen??? Also sprich wie fange ich dies ab.
Auch möchte ich mich für die schnellen Antworten bedanken.
Ingo
|

19-07-2005, 11:25
|
|
firstlord18
Member
|
|
Registriert seit: Nov 2004
Ort: Germany
Beiträge: 310
|
|
Überprüfe, ob die Tables gesperrt sind. Wenn das der Fall ist, gebe eine Meldung auf der Seite aus, dass die DB für 10min oder so nicht zugänglich ist!
|

19-07-2005, 11:27
|
|
mrhappiness
PHP Guru
|
|
Registriert seit: Oct 2002
Beiträge: 14.890
|
|
Ganz profane Möglichkeit:
Datei anlegen mit Namen locked, irgendwas reinschreiben und dann abspeichern
Tabelle sperren
Daten einspielen
Tabelle entsperren
Datei [u[locked[/u] löschen
Andere Skripte prüfen, ob die Datei locked existiert
Oder einen Wert in eine andere Tabelle schreiben, die du nicht sperrst, oder oder oder
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
|

19-07-2005, 11:57
|
|
chansel0049
Member
|
|
Registriert seit: Apr 2004
Beiträge: 294
|
|
Zitat:
Original geschrieben von Shurakai
[B]Alternativ nicht für alles ne eigene Query. DELETES oder INSERTS, da kann man hervorragend mehrere mit 1 Query einfügen / löschen.
|
Das geht sogar (begrenzt) für UPDATES mit etwas SQL-TRicksen -- damit kannst Du deine 16.000 Updates sicherlich auf 1000 oder weniger drücken
Siehe CASE ...
allerdings bleibens dann immer noch einige --
Aber waws spricht gegen eine Ankündigung, dass jeden Tag um 5.00 der Server für 10min oder so evtl langsam läuft oder nicht erreichbar is und dann die sache per cronjob reinjagen?
__________________
chansel0049
----------------------------------------------------
if you've reached the bottomline - dig further!
Übersetzer gesucht? http://www.babelport.com
|

19-07-2005, 13:34
|
|
prego
PHP Senior
|
|
Registriert seit: May 2005
Ort: Hey ropp, hinne riwwer unn wirrer zuricke!
Beiträge: 1.602
|
|
PHP per Cron:
wget http://www.meinesetie.de/scripts/machmischcron.php
du rufst quasi die seite auf, und das eben per cron....
__________________
so long, der-p | 72dpi-club
Microsoft IE-Manager Dean Hachamovitch bei der Vorführung des IE7 Beta Preview 2 am 20.3.2006:
"Wir hatten mit IE ganz offensichtlich was verschlafen."
|

19-07-2005, 13:47
|
|
ExInfernis
Junior Member
|
|
Registriert seit: Jan 2004
Ort: Berlin
Beiträge: 213
|
|
Moin,
bei mir wird um 3 Uhr morgens der Login gesperrt und ne Meldung an alle verbliebenen User abgelegt, dass der Server um 3.30 gewartet wird und mit Performanceverlusten zu rechnen ist (beides über einen CRON).
Um 3.30 Uhr geht dann das Update los , anschließend kommt das Backup, und um 4Uhr wird der Login wieder frei geschaltet.
Insgesamt also drei Cronjobs für Sperren, Meldung, Update, Backup und Freischalten!
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|