Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Connessione al DB

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    137

    Connessione al DB

    Dovendo gestire molti utenti che interagiscono col servizio web (php+mysql) sia per leggere che per aggiungere materiale, la connessione al database viene effettuata una per ciascun utente che si connette oppure una unica, la stessa, utilizzata per le operazioni di tutti gli utenti? In generale che scelta si attua e perché? È la prima volta che realizzo un servizio web pensato per essere usato da più utenti contemporaneamente.

    Inoltre, nel caso venisse utilizzata una sola connessione, come mi devo comportare con le transazioni e con la query SELECT LAST_INSERT_ID per ottenere l'ultimo id auto_increment generato dall'ultimo INSERT specifico dell'utente?

    Grazie!

  2. #2
    la connessione sara' una per ogni chiamata a mysql_connect.
    mysql esegue le query sempre in modo seriale una dietro l'altra e mai in modo parallelo (contemporaneamente)

    verranno usati sempre gli stessi parametri (host-user-pwd) caratterizzati da un id# identificatore del link per ogni connessione effettuata.

    se hai dei dubbi su LAST_INSERT_ID utilizza mysql_insert_id() con l'id# ottenuto alla connessione

    Se usi myisam le transizioni sono effettuate in modo automatico ed immediato.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    137
    perfetto è esattamente come pensavo.
    Visto che in precedenza già ho provato a seguire questa strada che per il momento ho abbandonato, come salvo in SESSION il resource link restituito da mysql_connect? Perché pare non salvarsi correttamente... e se non è un valore intero ci sono problemi con la deserializzazione.

    Infine ho usato LAST_INSER_ID come consigliato dalla documentazione e in quest'ottica di connessione al DB per ogni singolo utente, da come è descritta la funzione nella documentazione MySQL il problema non dovrebbe verificarsi.

    Il db che uso è InnoDB ma come per la situazione precedente non si dovrebbero verificare problemi di accavallamento di transazioni.

    Grazie!

  4. #4
    Originariamente inviato da kappabit
    Visto che in precedenza già ho provato a seguire questa strada che per il momento ho abbandonato, come salvo in SESSION il resource link restituito da mysql_connect? Perché pare non salvarsi correttamente... e se non è un valore intero ci sono problemi con la deserializzazione.
    Non puoi, al termine dell'esecuzione di uno script ogni risorsa creata all'interno di esso viene distrutta, quindi viene chiusa la connessione al db e il resource link svanisce.

    Alternativamente puoi provare http://uk.php.net/mysql_pconnect pero' secondo me porta piu' svantaggi che vantaggi (leggi bene la pagina per farti un'idea).

  5. #5
    non devi salvare in $_SESSION l'id# di connessione. Serve a nulla e puo' generare equivoci. La connessione viene chiusa a fine script e l'id abbandonato. La prossima connessione ne potra' avere un altro e quello tuo che hai memorizzato assegnato a qualche altra connessione.

    Per le transazioni ovviamente potrebbero nascere problemi se dal momento in cui leggi al momento in cui applichi una variazione qualcun'altro modificasse il record.

    Per una maggiore descrizione sulle transazioni ti rimando alla pillola che si trova nel thread in evidenza.

    http://forum.html.it/forum/showthrea...hreadid=603762

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    137
    La transazione la avvio sempre prima di effettuare la lettura dei dati che vanno valutati e poi eventualmente modificati.
    Ho letto i due link ed è esattamente quello che ho fatto fino ad ora.

    Dunque il problema sql è risolto, ora devo valutare correttamente la situazione per l'integrità dei dati tra transazioni e LAST_INSERT_ID ma ritengo che non dovrebbe sussistere alcun problema.

    Grazie!

    NB: forse mi verranno in mente altri dubbi sulla questione, mi pareva di avere qualcos'altro, ma ora mi sfugge

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.