php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 25-10-2006, 12:09
frankburian
 Guest
frankburian
Beiträge: n/a
Standard mysql_insert_id() zeitgleich - Chaos?

Hallo.

Könnte mir jemand einen Tipp geben, wie ich folgendes Problem lösen könnte?

Ich habe 4 Cronjobs, die jede Minute Daten holen und in die gleiche Tabelle meiner Datenbank diese auch speichern.

Ich brauch aber von jedem Eintrag die ID - die ich mir mit mysql_insert_id() hole.

jetzt ist die wahrscheinlichkeit sehr hoch, das es passieren kann das ich die falsche ID, des anderen gleichzeitigen Cronjobs, bekomme.

Wie könnte man das verhindern????

MfG
Frank
Mit Zitat antworten
  #2 (permalink)  
Alt 25-10-2006, 15:29
closure
 Master
Links : Onlinestatus : closure ist offline
Registriert seit: Mar 2006
Beiträge: 796
closure ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

engines verwenden die transaktionen unterstützen z.B. innodb.

greets
__________________
(((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")
Mit Zitat antworten
  #3 (permalink)  
Alt 25-10-2006, 15:35
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von closure
engines verwenden die transaktionen unterstützen z.B. innodb.
Hat damit nichts zutun... :P ^^


Zitat:
The value of mysql_insert_id() is affected only by statements issued within the current client connection. It is not affected by statements issued by other clients.
D.h. das interessiert kein bisschen ob du einen oder X Cronjobs laufen hast, du kriegst die auto_increment-ID von dem letzten Query des jeweiligen Cronjobs
Mit Zitat antworten
  #4 (permalink)  
Alt 25-10-2006, 15:35
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

Ist dir das schonmal passiert?

Warum glaubst du, das könne passieren?
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #5 (permalink)  
Alt 27-10-2006, 12:53
closure
 Master
Links : Onlinestatus : closure ist offline
Registriert seit: Mar 2006
Beiträge: 796
closure ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von ghostgambler
Hat damit nichts zutun... :P ^^
Nicht? Andere engines kennen doch kein isolation-level afaik.
Dann macht es einen unterschied.

Kannst du mir bitte mal die url geben von der dein zitat stammt.
Ich hab gerade mal auf php.net

Zitat:
Anmerkung: Der Wert der MySQL SQL Funktion LAST_INSERT_ID() liefert immer den zuletzt erzeugten AUTO_INCREMENT Wert. Dieser wird zwischen Abfragen nicht zurückgesetzt.
Bei konkurierenden verbindungen führt das ausserhalb von transaktionen zu
problemen.
Benutzt mysql_insert_id nicht intern LAST_INSERT_ID()?
Dann nehm ich alles zurück.

greets
__________________
(((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")
Mit Zitat antworten
  #6 (permalink)  
Alt 27-10-2006, 15:00
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von closure
Nicht? Andere engines kennen doch kein isolation-level afaik.
Dann macht es einen unterschied.
Ich kenne nur mysql ^^,

Zitat:
Kannst du mir bitte mal die url geben von der dein zitat stammt.
http://dev.mysql.com/doc/refman/5.1/...insert-id.html

Zitat:
Benutzt mysql_insert_id nicht intern LAST_INSERT_ID()?
Die php-Funktion ist nur eine Schnittstelle zur oben verlinkten C-Funktion der mysql-api und da steht ja der Unterschied zwischen der Funktion und LAST_INSERT_ID()

Nochmal zur Transaktion: Du hast recht, scheinbar *würde* es so auch gehen und dann LAST_INSERT_ID(), ist nur nicht empfehlenswert, siehe http://dev.mysql.com/doc/refman/5.1/...html#id2604376
Mit Zitat antworten
  #7 (permalink)  
Alt 27-10-2006, 15:02
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von closure
Benutzt mysql_insert_id nicht intern LAST_INSERT_ID()?
Nein, sondern mysql_insert_id aus der API, und für die gilt:
Zitat:
The value of mysql_insert_id() is affected only by statements issued within the current client connection.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #8 (permalink)  
Alt 27-10-2006, 16:10
closure
 Master
Links : Onlinestatus : closure ist offline
Registriert seit: Mar 2006
Beiträge: 796
closure ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ah,
ok jetzt war ich etwas verwirrt. Ich dachte die ganze zeit wir
reden von der phpversion von mysql_insert_id.
Deswegen konnte ich auch kein gleichlautendes statement
wie das das ghostgambler genannt hat finden.

Dann weiss ich ja jetzt wovon wir reden und doch bin ich
etwas (durchaus positiv) überrascht, dass in diesem fall
konsistenz bei konkurierenden zugriffen, auch ohne transaktionen,
gewährleistet ist.

greets
__________________
(((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")
Mit Zitat antworten
  #9 (permalink)  
Alt 27-10-2006, 16:19
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von closure
Ich dachte die ganze zeit wir reden von der phpversion von mysql_insert_id.
Tun wir auch - aber diese PHP-Funktion ruft eben nur die gleichnamige Funktion der API von MySQL auf.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
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.

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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:53 Uhr.