Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Electro
    Registrato dal
    Dec 2003
    Messaggi
    565

    Piccolo chiarimento sui distruttori

    Ciao a tutti,
    avrei bisogno di un piccolo chiarimento sui distruttori impiegati nelle classi.
    La funzione __destruct quando viene eseguita? A fine generazione della pagina? Per esempio se nella funzione ci inserisco mysql_close($db), me lo esegue alla fine della generazione dell'intera pagina? :master:

    Ciao e grazie in anticipo.
    Nulla

  2. #2
    Ti suggerisco di iniziare leggendo il manuale ufficiale:

    http://www.php.net/manual/en/languag...con.destructor

    The destructor method will be called as soon as all references to a particular object are removed or when the object is explicitly destroyed or in any order in shutdown sequence.

  3. #3
    Utente di HTML.it L'avatar di Electro
    Registrato dal
    Dec 2003
    Messaggi
    565
    Originariamente inviato da filippo.toso
    Ti suggerisco di iniziare leggendo il manuale ufficiale:

    http://www.php.net/manual/en/languag...con.destructor

    The destructor method will be called as soon as all references to a particular object are removed or when the object is explicitly destroyed or in any order in shutdown sequence.
    Prima di chiedere, consulto sempre la documentazione ufficiale, solo che non mi è chiara la risposta alla mia domanda. Mi sapresti rispondere?
    Nulla

  4. #4

    Re: Piccolo chiarimento sui distruttori

    Originariamente inviato da Electro
    La funzione __destruct quando viene eseguita?
    A fine generazione della pagina?
    The destructor method will be called as soon as all references to a particular object are removed or when the object is explicitly destroyed or in any order in shutdown sequence.

    A me sembra piuttosto chiaro.

    Originariamente inviato da Electro
    Per esempio se nella funzione ci inserisco mysql_close($db), me lo esegue alla fine della generazione dell'intera pagina?
    Non necessariamente. Come da manuale, il metodo __destruct() viene chiamato non appena tutti i riferimenti dell'oggetto vengono rimossi, quando l'oggetto viene distrutto esplicitamente oppure in un ordine qualsiasi durante la sequenza di shutdown.

  5. #5
    Utente di HTML.it L'avatar di Electro
    Registrato dal
    Dec 2003
    Messaggi
    565

    Re: Re: Piccolo chiarimento sui distruttori

    Originariamente inviato da filippo.toso
    The destructor method will be called as soon as all references to a particular object are removed or when the object is explicitly destroyed or in any order in shutdown sequence.

    A me sembra piuttosto chiaro.



    Non necessariamente. Come da manuale, il metodo __destruct() viene chiamato non appena tutti i riferimenti dell'oggetto vengono rimossi, quando l'oggetto viene distrutto esplicitamente oppure in un ordine qualsiasi durante la sequenza di shutdown.
    "in un ordine qualsiasi durante la sequenza di shutdown." non mi è chiara questa frase, non riesco a capire di cosa parla.
    Nulla

  6. #6
    La "sequenza di shutdown" inizia quando l'esecuzione dello script è completata.

    In "ordine qualsiasi" significa che non c'è alcuna garanzia che il metodo __destruct() di una classe venga richiamato prima di quello di un'altra classe, etc.
    Questo va tenuto a mente quando, ad esempio, si liberano risorse collegate (es. la connessione ad un database ed i recordset).

    In ogni caso chiamare mysql_close() a quel punto è un po' inutile visto che comunque PHP chiuderebbe automaticamente la connessione al DB (a meno che sia persistente).

  7. #7
    Utente di HTML.it L'avatar di Electro
    Registrato dal
    Dec 2003
    Messaggi
    565
    Originariamente inviato da filippo.toso
    La "sequenza di shutdown" inizia quando l'esecuzione dello script è completata.

    In "ordine qualsiasi" significa che non c'è alcuna garanzia che il metodo __destruct() di una classe venga richiamato prima di quello di un'altra classe, etc.
    Questo va tenuto a mente quando, ad esempio, si liberano risorse collegate (es. la connessione ad un database ed i recordset).

    In ogni caso chiamare mysql_close() a quel punto è un po' inutile visto che comunque PHP chiuderebbe automaticamente la connessione al DB (a meno che sia persistente).
    Quindi viene eseguita alla fine, insieme a tutti gli altri distruttori, casualmente, giusto?

    Se php alla fine chiude comunque la connessione al database, che senso la funzione mysql_close() ?
    Nulla

  8. #8
    Quindi viene eseguita alla fine
    Non necessariamente. Dipende dal codice, nel manuale vengono chiaramente descritti altri due casi in cui il metodo __destruct() viene richiamato.

    In certe situazioni, poter chiudere la connessione al database prima possibile (es. non appena non ce ne è più bisogno) è vantaggioso (es. nei casi in cui il numero di connessioni al database è limitato).

  9. #9
    Utente di HTML.it L'avatar di Electro
    Registrato dal
    Dec 2003
    Messaggi
    565
    Originariamente inviato da filippo.toso
    Non necessariamente. Dipende dal codice, nel manuale vengono chiaramente descritti altri due casi in cui il metodo __destruct() viene richiamato.
    In pratica quando assegno alla variabile che costituisce l'oggetto, il valore di variabile o di un altro oggetto, oppure se uso la funzione per distruggere l'oggetto, giusto?

    Originariamente inviato da filippo.toso
    In certe situazioni, poter chiudere la connessione al database prima possibile (es. non appena non ce ne è più bisogno) è vantaggioso (es. nei casi in cui il numero di connessioni al database è limitato).
    Ma tenere una connessione aperta fino alla fine, comporta uno spreco di risorse? O sostanzialmente, apparte limiti del db, è uguale?
    Nulla

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.