Fordi MySQL-replikeringstid er en ukontrollerbar variabel (selv i korrekte implementeringer kan der opstå problemer, der stopper replikering eller blokerer den), er det bedst ikke at stole på, at data replikerer. Du kan opdele problemet i to situationer:
1) Jeg er brugeren, der laver en CUD-operation, jeg forventer, at R-operationen efterfølgende afspejler den ændring, jeg lige har lavet. I dette tilfælde er du absolut nødt til at trække dataene ud af masteren, fordi brugeren forventer, at hans ændring havde en effekt.
2) Jeg er en ekstern bruger, jeg ved ikke, at der skete en CUD-kommando, og jeg er generelt ligeglad, så det er acceptabelt at returnere forældede data (i 99 % af implementeringerne, ellers ville du sandsynligvis ikke bruge PHP* ).
Et alternativ til #1 ville være at informere brugeren om, at hans ændring forplanter sig og er acceptabel i nogle situationer, f.eks. mange websteder vil fortælle dig, at x kan tage op til y minutter at vises, dette er denne situation i aktion.
- Hvis du har brug for øjeblikkelige opdateringer, kan du prøve at skrive til et cachelag, der polles sammen med (potentielt upålidelige) DB-data. Noget som memcached ville være en førsteklasses kandidat.