Visualizzazione risultati 1 fino 7 di 7

Discussione: [php] Fermare esecuzione script, se prende più di tot secondi

  1. #1
    Guest

    Exclamation [php] Fermare esecuzione script, se prende più di tot secondi

    Ciao a tutti!
    Ecco il mio problema, nella mia homepage, ho uno script php che ho realizzato per contare la righe in una tabella:
    Codice PHP:
    <?php
    // connessione e selezione del database
    mysql_connect('sql09.freemysql.net', 'safefile', 'password')
    or die(
    'Errore!');

    if(!
    mysql_select_db('files'))
    die(
    'Errore!');

    // query per ottenere l'elenco dei files nel DB
    $query = "SELECT * FROM tabella_files";

    $risultato = mysql_query($query)
    or die(
    'Errore!');
    //conto i files estratti
    $num=mysql_numrows($risultato);

    echo
    "<span><b>Files totali nelle cassaforti:</b>".$num."</span>";
    ?>
    Ho notato che però questo script rallenta, e di molto l'esecuzione della pagina, forse per via del fatto che deve contattare un database remoto, il problema è che l'intero utilizzo del sito avviene esclusivamente nella homepage, che quindi viene aggiornata diverse volte, l'utilizzo del sito diventa insostenibile se ogni volta che si esegue un operazione bisogna aspettare 5 secondi.

    La mia domanda è: E' possibile fermare l'esecuzione dello script con un die(), se inpiega più di tot secondi?
    Grazie in anticipo!

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Fermare lo script è la soluzione meno sensata.

    Puoi salvare il risultato ed aggiornarlo solo quando qualcuno effettivamente aggiunge un file (eliminando così completamente la query), oppure usare una query diversa, e.g.
    Codice:
    SELECT COUNT(*) FROM `tabella_files`
    così il database, invece di inviarti una enorme tabella, ti invia un numero.

  3. #3
    Guest

    Unhappy

    Grazie!
    Ora la query viene eseguita in un attimo, però in output mi scrive "Resource id #10", probabilmente ho sbagliato a estrarre il risultato:

    Codice PHP:
    <?php
    // connessione e selezione del database
    mysql_connect('sql09.freemysql.net', 'safefile', 'password')
    or die(
    'Connessione non riuscita: ' . mysql_error());

    if(!
    mysql_select_db('files'))
    die(
    'Selezione database fallita!');

    // query per ottenere l'elenco dei files nel DB
    $query = "SELECT COUNT(id_file) FROM `tabella_files`";

    $risultato = mysql_query($query)
    or die(
    'Errore!');

    $num=$risultato;
    echo
    "<span><b>Files totali nelle cassaforti:</b>".$num."</span>";
    ?>
    Ultima modifica di darkwolf : 10-10-2009 alle ore 18.37.57 Motivo: Rimossa la password per sicurezza.

  4. #4
    L'avatar di mycarlo
    mycarlo non è connesso Utente attivo
    Data registrazione
    06-10-2009
    Residenza
    $this->s50
    Messaggi
    467

    Predefinito

    Hai dimenticato di estrarre i dati :D!

    Codice PHP:
    <?php
    // connessione e selezione del database
    mysql_connect('host', 'user', 'password') // rimosso i dati grazie a foreach :D! Stai più attento la prossima volta :D
    or die('Connessione non riuscita: ' . mysql_error());

    if(!
    mysql_select_db('files'))
    die(
    'Selezione database fallita!');

    // query per ottenere l'elenco dei files nel DB
    $query = "SELECT COUNT(id_file) FROM `tabella_files`";

    $risultato = mysql_query($query)
    or die(
    'Errore!');

    $num= mysql_fetch_array($risultato);
    echo
    "<span><b>Files totali nelle cassaforti:</b>".$num["COUNT(id_file)"]."</span>";
    ?>
    Saluti!
    Ultima modifica di mycarlo : 10-10-2009 alle ore 18.26.04

  5. #5
    Guest

    Predefinito

    Grazie mille!

  6. #6
    L'avatar di foreach
    foreach non è connesso Altervistiano Junior
    Data registrazione
    11-06-2008
    Residenza
    3 metri sotto terra
    Messaggi
    501

    Predefinito

    In alternativa puoi usare uno script così:
    Codice PHP:
    <?php
    // connessione e selezione del database
    $db = mysql_connect('sql09.freemysql.net', 'safefile', 'password') or die('Connessione non riuscita: ' . mysql_error());
    mysql_select_db('files', $db) or die('Selezione database fallita!');

    // query per ottenere l'elenco dei files nel DB
    $query = mysql_query("SELECT COUNT(id_file) as VOLTE FROM `tabella_files`", $db) or die('Errore');

    $num= mysql_fetch_array($query);
    echo
    "<span><b>Files totali nelle cassaforti:</b>".$num['VOLTE']."</span>";
    ?>
    Ah, un'altra cosa, non mostrare mai la password di accesso, qualcuno ne può approfittare!




    foreach
    Ultima modifica di darkwolf : 10-10-2009 alle ore 18.38.32 Motivo: Rimossa la password per sicurezza.
    Codice PHP:
    foreach($vettore as $chiave => $valore) {
    echo 
    "Ciao";


  7. #7
    Guest

    Thumbs up

    Citazione Originalmente inviato da foreach Visualizza messaggio
    In alternativa puoi usare uno script così:
    Codice PHP:
    <?php
    // connessione e selezione del database
    $db = mysql_connect('sql09.freemysql.net', 'safefile', 'password') or die('Connessione non riuscita: ' . mysql_error());
    mysql_select_db('files', $db) or die('Selezione database fallita!');

    // query per ottenere l'elenco dei files nel DB
    $query = mysql_query("SELECT COUNT(id_file) as VOLTE FROM `tabella_files`", $db) or die('Errore');

    $num= mysql_fetch_array($query);
    echo
    "<span><b>Files totali nelle cassaforti:</b>".$num['VOLTE']."</span>";
    ?>
    Ah, un'altra cosa, non mostrare mai la password di accesso, qualcuno ne può approfittare!




    foreach
    Grazie, farò esattamente così!
    Grazie anche di avermi detto dela password, l'ho cambiata immediatamente!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •