Visualizzazione dei risultati da 1 a 10 su 10

Discussione: mysql_unbuffered_query

  1. #1

    mysql_unbuffered_query

    è vero che celerizza se devo soltanto usarla per una select di un ciclo while dove non si effettuano query?

    cosa cambia rispetto al classico mysql_query
    ??

  2. #2

    Re: mysql_unbuffered_query

    Originariamente inviato da kilio
    è vero che celerizza se devo soltanto usarla per una select di un ciclo while dove non si effettuano query?

    cosa cambia rispetto al classico mysql_query
    ??
    Ci sono pro e contro. Un pro e' che occupa meno memoria perche' estrae le righe e le invia senza bufferizzarle. Un contro e' che ci sono parecchie cose che non puoi fare, per esempio un'altra query se quella in corso non ha completato lo scarico delle tuple.

    Valuta tu:

    http://it.php.net/manual/it/function...ered-query.php

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

  3. #3

    Re: Re: mysql_unbuffered_query

    Originariamente inviato da piero.mac
    Ci sono pro e contro. Un pro e' che occupa meno memoria perche' estrae le righe e le invia senza bufferizzarle. Un contro e' che ci sono parecchie cose che non puoi fare, per esempio un'altra query se quella in corso non ha completato lo scarico delle tuple.

    Valuta tu:

    http://it.php.net/manual/it/function...ered-query.php
    dipende da che si ci deve fare
    se ad es fai una inner join e ti serve elaborare semplicemente i dati è un'ottima cosa...se ti serve fare un ciclo dove estrai i dati e lanciare una query allora no ^^

    con unbuffered query non le estrai proprio le estrae sul momento, quando fai la richiesta per fare il fetch

  4. #4
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    le query "classiche" fatte con mysql_query inviano la query al database, recuperano i dati e chiudono il dataset dei risultati. I dati xò anche se te non li leggi con mysql_fetch_XXX vengono comunque salvati in memoria, tutti quanti, quindi se una select ritorna molti risultati potresti avere consumi di memoria esagerati per il tuo script php. Con mysql_unbuffered_query invece il dataset non viene chiuso e ogni volta che recuperi i dati li vai a recuperare dal dataset stesso ancora aperto sul database. Questo ha come vantaggio un minor consumo di memoria per il tuo script php. Ragionando un po' per il sistema il consumo è invariato, ma dato che la memoria assegnata ad ogni script php è limitata, e quella utilizzabile da un database no, è consigliabile usare la seconda.

    Cmq io rimango del parere che in un sito web select che ritornino molti risultati non devono verificarsi...

  5. #5
    c'è anche un'altro vantaggio non indifferente
    il tempo di esecuzione ^^

    mysql le deve estrarre e mettere in memoria e poi tu le elabori...mentre con unbuffered query vengono estratte sul momento quindi si risparmia un ciclo

    secondo me, dove non servono doppie query o operazioni particolari da eseguire sul result set conviene usare la versione unbuffered di query

  6. #6
    Per il mio uso non serve, perche' ho diverse query contemporanee da utenti vari e queste vengono accodate, poi non si possono contare le righe estratte con mysql_num_rows, e poi appunto non si dovrebbe mai avere una valanga di dati in uscita.

    Per la memoria mysql_free_result et voila'....

    Dipende dalle esigenze. Come penso e dico, non c'e' il meglio od il peggio nelle funzioni, sono strumenti a disposizione a seconda dei bisogni.


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

  7. #7
    ok le mie esigenze sono semplici semplici:


    1) estraggo dal database le discussioni (solo i titoli)
    2) faccio il ciclo while con mysql_fetch_array per mostrare a video
    3) durante il ciclo faccio 2 diverse query per vedere:
    a: chi ha iniziato la discussione
    b: quante risposte ha quella discussione.

    compris?


    ps. mi da problemi con le date (che sono in datatime) dovrò metterle come INT?
    mi assicura maggiore precisione, vero???

  8. #8
    Originariamente inviato da piero.mac
    Per il mio uso non serve, perche' ho diverse query contemporanee da utenti vari e queste vengono accodate, poi non si possono contare le righe estratte con mysql_num_rows, e poi appunto non si dovrebbe mai avere una valanga di dati in uscita.

    Per la memoria mysql_free_result et voila'....

    Dipende dalle esigenze. Come penso e dico, non c'e' il meglio od il peggio nelle funzioni, sono strumenti a disposizione a seconda dei bisogni.

    genio?
    che vuol dire??

  9. #9
    Originariamente inviato da kilio
    genio?
    che vuol dire??
    A capirti....

    genio:

    gènio - Nella mitologia greco-romana, divinità tutelare della vita di ognuno - Entità astratta cui si attribuisce la facoltà di presiedere agli eventi della vita umana - Talento, tendenza naturale -

    gènio - Talento inventivo o creativo nelle sue manifestazioni più alte -

    gènio - Organismo civile o militare cui è affidato il compito della progettazione, costruzione e riparazione di lavori di interesse pubblico o militare

    oppure non ho capito la domanda....

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

  10. #10
    mi riferivo all'uso di mysql_free_result.
    cmq ho letto il manuale e ho capito.


    adesso il mio problema è inserire le date in un campo int 10 visto che l'attuale datatime mi fa un boato di casini... :maLOL:

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.