Visualizzazione dei risultati da 1 a 7 su 7

Discussione: variabili application

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    33

    variabili application

    Salve a tutto il forum.
    Sono agli inizi con php; come linguaggio server side conosco ColdFusion. In ColdFusion esistono 4 tipi di variabili persistenti:
    1) session, che possono essere condivise su piu' pagine visualizzate da un client su una certa applicazione e durano il tempo di una sessione.
    2) client (tramite i cookie), che possono essere condivise su piu' sessioni di un client su una certa applicazione. La durata dipende dal tempo impostato per i cookie.
    3) application, che possono essere condivise su piu' client che si collegano ad una certa applicazione.
    4) server, che possono essere condivise su più applicazioni su un certo server.

    In php ho trovato le variabili corrispondenti ai primi due tipi; non ho trovato pero' il terzo ed il quarto tipo di variabile. Vorrei quindi sapere se esistono in php le variabili di tipo application.

    grazie a tutti.

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    In php le variabili di tipo 3 e 4 non esistono per come le conosci tu, però le puoi gestire con la persistenza dei dati.

    Un esempio di variabile application può essere una variabile di configurazione, che andrai a salvare in un file o in un database per richiamarla ogni volta che l'applicazione viene eseguita.

    Un esempio di variabile strettamente server al volo non mi viene, comunque potrebbe essere un valore di configurazione condiviso da più applicazioni, e anche in questo caso la salverai in un file o in un db e la richiamerai ad ogni esecuzione delle singole applicazioni che la richiedono.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    33
    Ciao M4V1 e grazie per la risposta.

    Supponiamo il caso in cui una applicazione debba tenere traccia del numero dei biglietti venduti per un evento. All'applicazione possono accedere ovviamente più uteti contemporaneamente; quando un utente acquista un biglietto, il numero dei biglietti disponibili viene diminuito di una unita. Non deve succedere quindi che due utenti possano modificare la variabile che contiene il numero dei biblietti, nello stesso momento, altrimenti si rischia di vendere più biglietti di quelli disponibili.

    In ColdFusion esiste un metodo per bloccare la modifica di una variabile application da parte di un utente, se la variabile è in fase di modifica con un'altro utente (che sta acquistando un biglietto).

    In php tu mi dici che le variabili application non esistono, ma che si possono simulare salvando il contenuto di una variabile da qualche parte (file di testo o db) e recuperarla quando necessario; ma come posso evitarne la modifica contemporanea del valore da parte di due utenti? Cioè:
    1) utente a recupera il valore della variabile (supponiamo 3)
    2) utente b recupera il valore della variabile (ancora 3)
    3) utente a modifica il valore della variabile (ora 2)
    4) utente b modifica il valore della variabile (ora 2 anche per lui)
    5) utente a salva il valore della variabile (valore = 2)
    6) utente b salva il valore della variabile (valore = 2, mentre dovrebbe essere 1)

    Esiste in php un modo per bloccare la lettura/scrittura contemporanea da parte di due utenti di un file? O forse si risolve con un blocco sulla lettura/scrittura dei dati sul DB?

    Mi scuso per essermi così tanto dilungato nella spiegazione; spero almeno di essere stato chiaro.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Sei stato chiarissimo, e la tua è una domanda più che lecita.

    Come hai detto tu solitamente questo problema si risolve tramite il lock di righe/tabelle del database, che spesso, per avere un risultato più solido si usano insieme alla transazioni.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    33
    Grazie di nuovo per la risposta M4V1. Per fare il lock di righe/tabelle e per eseguire le transazioni, php ha delle istruzioni dedicate oppure occorre intervenire solo tramite sql? ColdFusion per esempio prevede istruzioni per eseguire blocchi di codice sql con lock durante l'esecuzione; se qualche cosa non viene eseguito correttamente, viene fatto un roolback...

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Per quanto riguarda le transazioni puoi usare pdo che è un abstraction layer che ti permette di generare codice compatibile per vari tipo di database, oppure operare direttamente sul database tramite sql. Ci alcune differenze, ma in molti casi sono 2 metodi intercambiabili.

    Il funzionamento dei lock può cambiare da db a db, ma in generale se il db rispetta i principi acid le transazioni avranno vari livelli di isolamento, più o meno conservativi, che gestiscono il lock dei dati. Questi però dovrai impostarli tramite sql (ovviamente se il livello di default non ti dovesse andare bene, altrimenti non devi settare nulla).

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    33
    ok M4V1, grazie un bel po'; sei stato utilissimo e molto chiaro. Buon lavoro...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.