Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    eseguire script al timeout della sessione o alla chiusura del browser

    Ciao a tutti,

    ho un problema da risolvere con l'utilizzo di un carrello della spesa da me scritto in php. Una volta che aggiungo un prodotto nel carrello cambio lo stado del prodotto stesso nel db, passando da "disponibile" a "nel carrello". Se però la sessione scade, il browser viene chiuso, il pc spento e altri casi del genere, il prodotto rimane "nel carrello" e altri acquirenti non lo trovano disponibile nella vetrina. Se però la sessione scade i prodotti non sono più nemmeno nel carrello e arrivo ad uno stato di inconsistenza del sistema! Pensavo di eseguire uno script prima di fare le query e settare a "disponibile" i prodotti rimasti a "nel carrello" per più di un tot tempo. In ogni caso questa mi sembra una soluzione inevitabile. Mi piacerebbe comunque limitare al massimo il ricorso a tale pratica "brutale" e vorrei lanciare uno script in concomitanza dell'evento di fine sessione o di chiusura del browser, confinando la pulizia dei dati solamente ai casi estremi (in caso salti la connessione).
    Qualcuno ha qualche idea o ha gestito in modo differente il problema?

    Grazie

    Valerio

  2. #2
    Per quale motivo hai implementato il sistema in questo modo?

    Rendi il prodotto non disponibile solo dopo che è stato realmente acquistato ed hai risolto il problema.

  3. #3
    Così evito che due acquirenti possano ordinare lo stesso prodotto. Purtroppo la gestione del magazzino è cruciale. Non saprei come fare altrimenti. Se cambio lo stato ad acquisto effettuato potrei ricevere più ordini con lo stesso codice prodotto e se in magazzino non c'è sufficiente disponibilità potrebbero subentrare ritardi notevoli nell'invio della merce. Posso evitare questo inconveniente adottando un sistema differente?

    Grazie della tempestività

  4. #4
    Originariamente inviato da vale_arna84
    Così evito che due acquirenti possano ordinare lo stesso prodotto.
    Se esegui correttamente le query, magari all'interno di una transazione, è impossibile che due utenti possano acquistare lo stesso prodotto. Se il secondo tenta l'acquisto, gli mostrerai un messaggio di errore "prodotto non disponibile".

    Originariamente inviato da vale_arna84
    Purtroppo la gestione del magazzino è cruciale.
    Hai comunque scelto il modo sbagliato per implementarla.

    Originariamente inviato da vale_arna84
    Non saprei come fare altrimenti.
    Ti è già stata indicata la soluzione.

    Originariamente inviato da vale_arna84
    Se cambio lo stato ad acquisto effettuato potrei ricevere più ordini con lo stesso codice prodotto
    No, perchè in fase di invio dell'ordine verifichi che il prodotto sia disponibile e visto che l'update dell'acquisto "concorrente" lo hai eseguito in una transazione, il controllo fallirà per il secondo cliente concorrente.

  5. #5
    Grazie dell'aiuto, sei stato illuminante!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.