Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    103

    PHP e operazioni simultanee su MySQL

    Salve, so che sicuramente sarà una domanda stupida ai più esperti. Sto realizzando un software gestionale con PHP e MySQL a cui avranno accesso circa 200-300 persone al giorno per tutto il giorno, che dovranno eseguire inserimento, modifica, lettura e cancellazione di dati. Dato che capiterà spesso che 2 o più utenti accedano al database per modificare dei dati contemporaneamente da postazioni diverse, esiste un modo per diciamo bloccare ogni utente finche una serie di query non vengano eseguite?

  2. #2
    Se parli di query, è già mysql che esegue una serie di lock sulle tabelle. Se invece parli di utenti, dovresti farlo tu, nel senso che se un utente accede ad una risorsa e non vuoi che altri possano accedere, dovresti impostare un flag che viene liberato alla fine di un'operazione, ma devi prevedere anche un tempo limite, nel senso che un utente può accedere ad una risorsa e poi chiudere il browser senza completare l'operazione e quindi la risorsa resterebbe in lock.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    103
    La mia domanda è riferita alle query. So che MySQL ogni volta che si effettua una query mette le richieste in buffer ma se due utenti devono eseguire più query che devono necessariamente essere eseguite una dopo l'altra come faccio a evitare che le query di uno si mischino con quelle dell'altro? c'è un modo per dire a mysql, devo fare 3 query, finchè non le finisco non far fare niente agli altri?

  4. #4
    Ok molto probabilmente con "Le transazioni" risolvi (funzionano solo con tabelle di tipo InnoDB), vedi: http://www.html.it/pag/32159/transazioni-e-lock/
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    103
    Con quello che mi hai fornito si risolve se avessi n utenti che possono accedere al database, col codice php io accedo al database sempre con le stesse credenziali, quindi è come se fossi sempre lo stesso utente o sbaglio?

  6. #6
    Si ma se ad esempio blocchi una tabella, fino a quando non rilasci il blocco, la tabella resta bloccata, sia nel caso di 2 utenti, sia nel caso dello stesso utente, questo perchè il lock è a livello di database. Quindi stessa cosa per le transazioni.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    103
    ok quindi se io mi collego al database con le credenziali pippo pippo avvio una transazione, finchè non finisco la transazione anche se tu ti colleghi al database sempre con pippo pippo non puoi eseguire query?

  8. #8
    Cosa intenti per "se io mi collego al database con le credenziali pippo pippo"?
    Che ti colleghi mediante ad un'area riservata, quindi sono credenziali della parte gestionale?
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    103
    La mia classe php si collega al database con user Pippo pass Pippo

  10. #10
    Ok si se effettui un lock su una tabella, fino a quando il lock non viene rilasciato, quella tabella non può essere modificata, questo l'ho testato personalmente. E molto probabilmente funziona così anche con le transazioni.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

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.