SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 30.08.2010, 11:44:40
Benutzerbild von Domi
Domi Domi ist offline
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)
Mit Zitat antworten
  #2  
Alt 31.08.2010, 09:28:07
KTB KTB ist offline
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!
Mit Zitat antworten
  #3  
Alt 31.08.2010, 10:14:00
Der-Dennis Der-Dennis ist offline
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
Mit Zitat antworten
  #4  
Alt 31.08.2010, 10:26:17
cortex cortex ist offline
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
Mit Zitat antworten
  #5  
Alt 31.08.2010, 11:24:06
Benutzerbild von Domi
Domi Domi ist offline
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 Beitrag anzeigen
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 Beitrag anzeigen
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 Beitrag anzeigen
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
Mit Zitat antworten
  #6  
Alt 31.08.2010, 12:20:51
Der-Dennis Der-Dennis ist offline
Anfänger
 
Registriert seit: Jul 2010
Alter: 37
Beiträge: 29
AW: UPDATE verfälscht SELECT?

Zitat:
Zitat von Domi Beitrag anzeigen
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
Mit Zitat antworten
  #7  
Alt 31.08.2010, 14:19:33
Benutzerbild von Domi
Domi Domi ist offline
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 Beitrag anzeigen
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
Mit Zitat antworten
  #8  
Alt 31.08.2010, 14:58:43
jabubo jabubo ist offline
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.
__________________
PHP online testen, zum Beispiel: md5, sha1, base64_decode, preg_match, urldecode und viele weitere...
Mit Zitat antworten
  #9  
Alt 31.08.2010, 15:27:17
Benutzerbild von Domi
Domi Domi ist offline
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 Beitrag anzeigen
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
Mit Zitat antworten
  #10  
Alt 31.08.2010, 17:03:37
Der-Dennis Der-Dennis ist offline
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
Mit Zitat antworten
Antwort


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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ausgabe wird nicht angezeigt Extremefall PHP Grundlagen 9 17.12.2009 08:49:45
update und select in einem wtf123 MySQLi/PDO/(MySQL) 2 03.06.2009 19:38:17
UPDATE und SELECT MrLongbaugh MySQLi/PDO/(MySQL) 2 20.07.2006 12:27:50
Update ohne vorheriges Select? mad-boy MySQLi/PDO/(MySQL) 4 29.07.2003 21:40:26
To Many Connections ProGamer11 PHP Grundlagen 0 18.06.2003 23:52:56


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:32:09 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt