Poiché il tempo di replica di MySQL è una variabile incontrollabile (anche in implementazioni corrette possono sorgere problemi che bloccano la replica o la bloccano), è meglio non fare affidamento sulla replica dei dati. Puoi suddividere il problema in due situazioni:
1) Sono l'utente che esegue un'operazione CUD, mi aspetto che le postfazioni dell'operazione R rispecchino la modifica appena apportata. In questo caso è assolutamente necessario estrarre i dati dal master, perché l'utente si aspetta che la sua modifica abbia avuto effetto.
2) Sono un utente esterno, non so se è stato eseguito un comando CUD e generalmente non mi interessa, quindi è accettabile restituire dati non aggiornati (nel 99% delle implementazioni, altrimenti probabilmente non useresti PHP* ).
Un'alternativa al n. 1 sarebbe informare l'utente che la sua modifica si sta propagando ed è accettabile in alcune situazioni, ad es. molti siti Web ti diranno che la visualizzazione di x potrebbe richiedere fino a y minuti, questa è la situazione in azione.
- Se hai bisogno di aggiornamenti istantanei, puoi provare a scrivere su un livello cache che viene sottoposto a polling insieme ai dati DB (potenzialmente inaffidabili). Qualcosa come memcached sarebbe un ottimo candidato.