Toon posts:

MySQL Select haalt oude gegevens op

Pagina: 1
Acties:

Verwijderd

Topicstarter
De vraag heeft denk ik wel enige uitleg nodig, dus hier komt ie:

Ik heb
- een socketserver in php
- een beheer-module, ook in php maar nu als apache-module

Als ik in de beheermodule de naam van een persoon wijzig, zorg ik dat ik na een succesvolle MySQL update-query verbinding maak met de socketserver.
Vervolgens stuur ik deze socketserver de opdracht (samen met de user-id als argument) om de gegevens van deze gebruiker op te halen en te 'broadcasten' naar alle aangesloten gebruikers zodat iedereen geinformeerd is over de veranderingen.

Het ophalen van deze gegevens gebeurt volgens een nieuwe mysql SELECT-query, en het rare is dat soms de oude gegevens op worden gehaald, dus de gegevens zoals ze waren -voor- de update-query, en deze 'oude' gegevens worden iedere keer gebroadcast, wat dus eigenlijk aangeeft dat de update-query gelukt is. (nb: Als deze query niet correct was zou ik dat altijd op mijn scherm krijgen)

Ik heb het ook met een php-sleep()-opdracht geprobeerd met 3 of 4 seconden tussen de update en de select, maar dit schijnt nog steeds geen verschil uit te maken.

Een soortgelijk principe wordt ook toegepast als de gebruiker zelf zijn gegevens aanpast.
In dat geval wordt er vanuit een Flash applicatie een HTTP-POST-request verzonden, en als de upate-query dan afgerond is wordt er via HTTP naar de gebruiker een xml-signaaltje terug-gestuurt dat het gelukt is.
Hierna verstuurt de flash-applicatie automatisch de opdracht om de gegevens opnieuw te laden en te broadcasten, en deze gaat iedere keer wel perfect.

Dus de vraag is: Heeft iemand hier een idee waarom ik oude gegevens terugkrijg terwijl de update goed gegaan is (zoals ook blijkt als via een konsole die mysql-database direct controleer)

ps: FLUSH QUERY CACHE of RESET QUERY CACHE heeft geen enkele invloed.

php-versie = 5.1.4
mysql-versie = Ver 14.12 Distrib 5.0.22

Alvast bedankt voor het nemen van de moeite om dit bericht te lezen :)

  • pjonk
  • Registratie: November 2000
  • Laatst online: 22-11 20:39
Gebruik gaan maken van Transacties? Die garanderen dat je data daadwerkelijk is gecommit naar de database.

It’s nice to be important but it’s more important to be nice


  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 30-11 12:59

LauPro

Prof Mierenneuke®

Je kan anders ook even dit proberen, dan hoef je niet te committen (code aan te passen):
SQL:
1
SET AUTOCOMMIT=1

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Verwijderd

Topicstarter
Ikke ben }:O

De plugin doet het, maar je moet dus wel on_post_update_user gebruiken ipv on_pre_update_user ... |:(

waarom ik soms de nieuwere gegevens krijg voor de update moet ik nog uitzoeken, maar ik denk dat dat te maken heeft met de nodige tijd/overhead voor de socket_connect in de plugin.

Toch bedankt voor het meedenken ;)