Il concetto di asta di Penny e come funziona il timer

1

Sto creando un sito di aste di penny usando il framework PHP yii. La considerazione principale del sistema è di aggiornare i record del database di tutte le aste attive (massimo 15 aste) con il timer ticker corrente.

Sto cercando un consiglio su come dovrei progettare il sistema in cui ogni articolo dell'asta avrà il proprio conto alla rovescia memorizzato nel database. Quando qualcuno fa un'offerta all'asta, il contatore deve reimpostarsi su 2 minuti. Tutti gli utenti connessi al sistema dovrebbero vedere lo stesso conto alla rovescia per quella determinata asta.

Sono poco confuso su come dovrei progettare il sistema. Ci sarà un problema di prestazioni se ci sono frequenti aggiornamenti al database (Mysql)? Se ci sono 15 aste attive e vengono aggiornate ogni secondo, il timer per il conto alla rovescia diminuisce di un secondo nella tabella del database per la particolare asta.

La mia prima idea per lo schema sottostante, per una tabella chiamata auction_lots :

Auction_id,startdatetime,counter_timer,status

Sto cercando un consiglio su come dovrei progettarlo.

    
posta madi 06.06.2014 - 04:49
fonte

1 risposta

1

Non consiglierei di aggiornare i record di tutte le aste attive ogni secondo. Penso che il modo migliore sarebbe quello di memorizzare un tempo di scadenza per ogni asta come data e ora (o un timestamp) e modificarlo solo quando si verifica un evento (ad esempio quando qualcuno mette all'asta l'articolo, impostarlo su current_time + 2 minuti) .

Per far vedere a tutti lo stesso valore, devi scrivere un semplice script che calcoli il numero di secondi alla fine di tutte le aste attive:

$time = time();   //current timestamp from server
//for each active auction:
$secondsToEnd[$auction->id] = $auction->expiration_timestamp - $time;
echo json_encode($secondsToEnd);

Quindi fai in modo che ogni cliente legga i $ secondiToEnd dal server tramite una chiamata AJAX ogni secondo.

Ho controllato un sito polacco di aste di penny e penso che sia così che funziona. Il vero problema che penso è quando due persone fanno clic su "offerta" in un brevissimo periodo di tempo. Quindi a uno di essi dovrebbe essere dato un errore.

    
risposta data 20.10.2014 - 01:08
fonte

Leggi altre domande sui tag