CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
30.08.2010, 11:44:40
|
|
Senior Member
|
|
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
|
|
UPDATE verfälscht SELECT?
Hallo Zusammen,
hab nen PHP-Skript auf der Konsole laufen, welches auch gerne mal über Tage hinweg läuft, da es jede Menge Einträge gibt und er für jeden Eintrag ein Skript laufen lass muss, welches nochmals ca. 1 Sekunde dauert.
PHP-Code:
$sql = 'SELECT * FROM table ORDER BY value';
// ...
while ($row = mysql_fetch_assoc($result)) {
// ...
$sql = 'UPDATE table SET value = ' . $random . ' WHERE id = ' . $row['id'];
jetzt meine Frage: Kann es sein durch das sortieren an Hand eines Feldes welches auch immer wieder upgedatet wird irgendwas zerwürfelt wird und somit manche Einträge doppelt rauskommen? Ich war eigtl. bisher überzeugt davon, dass er einmal beim SELECT auswählt welche Datensätze er will und das UPDATE ihn dabei nicht stört.
-> bin weiter auf der Suche nach dem Fehler und möchte dieses Phänomen komplett als Fehler ausschließen.
Gruß
Domi
__________________
the best way to be ready for the future is to invent it
Geändert von Domi (31.08.2010 um 17:46:11 Uhr)
|
31.08.2010, 09:28:07
|
Member
|
|
Registriert seit: Mar 2006
Alter: 38
Beiträge: 599
|
|
AW: UPDATE verfälscht SELECT?
Verstehe ich das richtig, während das UPDATE läuft, holst du Daten über das SELECT raus?
__________________
In der Ruhe liegt die Kraft!
|
31.08.2010, 10:14:00
|
Anfänger
|
|
Registriert seit: Jul 2010
Alter: 37
Beiträge: 29
|
|
AW: UPDATE verfälscht SELECT?
Hey Domi,
Zitat:
PHP-Code:
$sql = 'SELECT * FROM table ORDER BY value';
while ($row = mysql_fetch_assoc($result)) {
$sql = 'UPDATE table SET value = ' . $random;
|
verstehe ich das richtig, dass Du X-MAL (also so viele Datensätze wie die Tabelle aus dem Select hat) ALLEN Datensätzen einen Zufallswert zuweisen willst?
Das macht egal wie man's dreht und wendet überhaupt keinen Sinn.
Gruß, Dennis
|
31.08.2010, 10:26:17
|
SELFPHP Profi
|
|
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
|
|
AW: UPDATE verfälscht SELECT?
vielleicht findest du hier was zu deinem problem: wie MySQL Tabellen sperrt. da steht auch einiges zur gleichzeitigen verwendung von SELECT und INSERT.
cx
|
31.08.2010, 11:24:06
|
|
Senior Member
|
|
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
|
|
AW: UPDATE verfälscht SELECT?
Zitat:
Zitat von Der-Dennis
Hey Domi,
verstehe ich das richtig, dass Du X-MAL (also so viele Datensätze wie die Tabelle aus dem Select hat) ALLEN Datensätzen einen Zufallswert zuweisen willst?
Das macht egal wie man's dreht und wendet überhaupt keinen Sinn.
Gruß, Dennis
|
Hi,
nein, möchte ich natürlich nicht. Wollte das Beispiel nur so einfach wie möglich halten. Im endeffekt werden aus der Datenbank N URLs geholt, diese Seiten werden relativ aufwendig analysiert und wieder in die DB geschrieben per update.
Zitat:
Zitat von cortex
vielleicht findest du hier was zu deinem problem: wie MySQL Tabellen sperrt. da steht auch einiges zur gleichzeitigen verwendung von SELECT und INSERT.
cx
|
Danke für den Link. Die Frage die ich ja jetzt erstmal habe, ob es wirklich so ist, dass es dort überhaupt ein Problem gibt? Wenn ich die LOCKs einrichte, dann ist das ja hauptsächlich, dass andere Abfragen/updates usw nicht stören, aber hier macht es ja genau das Script selber in dem ich jeden Datensatz update, den ich vorher selecte.
Bin also noch nicht wirklich schlauer =)
Zitat:
Zitat von KTB
Verstehe ich das richtig, während das UPDATE läuft, holst du Daten über das SELECT raus?
|
nein, während des SELECTs mach ich immer wieder UPDATEs
__________________
the best way to be ready for the future is to invent it
|
31.08.2010, 12:20:51
|
Anfänger
|
|
Registriert seit: Jul 2010
Alter: 37
Beiträge: 29
|
|
AW: UPDATE verfälscht SELECT?
Zitat:
Zitat von Domi
nein, möchte ich natürlich nicht. Wollte das Beispiel nur so einfach wie möglich halten. Im endeffekt werden aus der Datenbank N URLs geholt, diese Seiten werden relativ aufwendig analysiert und wieder in die DB geschrieben per update.
|
Dann bin ich ja beruhigt :-)
Aber ehrlich gesagt kann ich so mit dem Beispiel nicht wirklich was anfangen. Ich habe beispielsweise einen Cronjob, der ähnliches macht. Also per Select alle Datensätze aus einer Tabelle holt und die dann ändert. Das klappt ohne Probleme.
Wenn ich allerdings Dein Beispiel von vorher sehe, dass das Update alle Datensätze ändert, kann ich mir schon vorstellen, dass das Probleme geben könnte. Du würdest so ja auch Datensätze ändern, die noch nicht vom Select geholt wurden.
Ein konkreteres Beispiel wäre daher sicher angebracht.
Gruß, Dennis
|
31.08.2010, 14:19:33
|
|
Senior Member
|
|
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
|
|
AW: UPDATE verfälscht SELECT?
Zitat:
Zitat von Der-Dennis
Du würdest so ja auch Datensätze ändern, die noch nicht vom Select geholt wurden.
|
das is eben genau das Problem, ich sortiere nach einem Feld, im Beispiel `value` welches ich aber per UPDATE wieder ändere (Werte ergeben sich aus Analyse, fürs Beispiel könnte man aber auch $random nehmen). Dahers stellt sich mir die Frage, ob das nicht vorher irgendwie schon bestimmt wird welche Beiträge wann kommen und ob das UPDATE wirklich Einfluss drauf hat?
Datensätze sind es 1 - 10.000 je nach dem wie viele Unterseiten die Webseite hat, die Analyse kann aber schon recht langsam sein, manchmal bringen 4 in der Sekunde durch, manchmal nur einen, kommt halt immer drauf an. Script läuft als Shellscript. Daher dauert das ganze auch recht lang.
__________________
the best way to be ready for the future is to invent it
|
31.08.2010, 14:58:43
|
Anfänger
|
|
Registriert seit: Aug 2010
Alter: 43
Beiträge: 27
|
|
AW: UPDATE verfälscht SELECT?
Mal zu deinem SELECT ein Hinweis, wie du dir die Neusortierung sparen kannst:
Code:
SELECT * FROM table ORDER BY rand();
Dieser Select sortiert on the fly die Ergebnisse zufällig. Damit ist das Update überflüssig.
So wie ich dein Problem lese, hast du eventuell einen Fehler in der Datenbankstruktur. Arbeitest du beim Aktualisieren der Ergebnisse, mit der zufälligen (value) oder mit einer eindeutigen ID?
Sofern du deine Spalte nutzt in der die Zufallswerte stehen ist klar, dass ein späteres Update nicht mehr auf den richtigen Datensatz trifft. Immerhin ist dieser ja durch ein erneutes aufrufen von UPDATE verändert worden.
|
31.08.2010, 15:27:17
|
|
Senior Member
|
|
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
|
|
AW: UPDATE verfälscht SELECT?
Zitat:
Zitat von jabubo
Mal zu deinem SELECT ein Hinweis, wie du dir die Neusortierung sparen kannst:
Code:
SELECT * FROM table ORDER BY rand();
Dieser Select sortiert on the fly die Ergebnisse zufällig. Damit ist das Update überflüssig.
So wie ich dein Problem lese, hast du eventuell einen Fehler in der Datenbankstruktur. Arbeitest du beim Aktualisieren der Ergebnisse, mit der zufälligen (value) oder mit einer eindeutigen ID?
Sofern du deine Spalte nutzt in der die Zufallswerte stehen ist klar, dass ein späteres Update nicht mehr auf den richtigen Datensatz trifft. Immerhin ist dieser ja durch ein erneutes aufrufen von UPDATE verändert worden.
|
Hi,
ich will aber nicht per Random sortieren, auch hat das ganze nichts mit Zufallswerten zu tun. Die analyse liefert einen Fehlerwert der im Idelfall 0 ist. Beim SELECT soritere ich eben nach den Fehlern absteigend, so dass die Seiten mit den meißten Fehlern immer zuerst neu analysiert werden. Nun gibt es einen neuen Fehlerwert, der eben anders sein kann wie vorher, da es unvorhersehbar ist wie der ist, habe ich diesen im Beispiel oben mit $random beschrieben. Hoffe jetzt ist es verständlicher? Wie man nach Random sortiert war mir auch klar, mache das ganze ja nicht schon umsonst so lange.. :P
__________________
the best way to be ready for the future is to invent it
|
31.08.2010, 17:03:37
|
Anfänger
|
|
Registriert seit: Jul 2010
Alter: 37
Beiträge: 29
|
|
AW: UPDATE verfälscht SELECT?
Hey Domi,
jetzt wird's mir klarer, aber noch nicht ganz klar :-)
Heißt das, dass der Fehlerwert einer Seite von den Fehlerwerten der anderen Seiten abhängt? Wenn ja, wirst Du meiner Meinung nach nicht drum herum kommen, eine Seite in welcher Form auch immer abzuarbeiten, dann alle Updates durchzuführen und wieder von vorne zu beginnen. Sonst würde es wirklich Probleme mit SELECT in Kombination mit UPDATE geben.
Wenn die Fehlerwerte nicht voneinander abhängen sollte es eigentlich funktionieren. Du arbeitest die Fehler einfach der Reihe nach ab. Dann müsstest Du, wenn ich Dich richtig verstehe, allerdings hinnehmen, dass nicht gezwungenermaßen immer die Seite mit dem größten Fehler zuerst abgearbeitet wird. Wenn Du das möchtest, geht das meiner Meinung nach auch nur mit einem "Neustart".
Gruß, Dennis
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
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.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:32:09 Uhr.
|