Un server database come MySQL è nato per supportare accessi concorrenti, oltretutto scriveresti in modo sequenziale nella tabelle e potresti sempre leggere i dati con un ORDER BY.dici che dal database questo problema non si pone?
Una cosa tipo:
while(!flock($file, LOCK_EX)) {}
Eventualmente con un usleep() ed un controllo delle esecuzioni per evitare un ciclo infinito.