se ho capito bene cosa vuoi fare, io creerei una tabella con questi campi:

id_utente
codice
ultima_azione

e quando si collega un utente (in pseudocodice):
codice:
validita = 1 giorno

se (adesso-ultima_azione)>validita //periodo scaduto
  scelgo un codice dall'array
  verifico con una query che ci siano massimo 4 utenti con quel codice e (adesso-ultima_azione)<=validita
  se e' vero
    glie l'assegno
  altrimenti
    scelgo un altro codice e verifico da capo

altrimenti //il periodo non e' scaduto
  aggiorno il database impostando all'orario attuale l'ultima azione dell'utente
ciao
danno