Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di garlick
    Registrato dal
    Dec 2001
    Messaggi
    385

    Sherlock holmes del php a me: script 24 ore

    Vi presento questo problema che per me è un mistero.

    ogni 24 ore devo sorteggiare 5 (in un caso 4) link per categoria da visualizzare. Questi link ogni 24 ore devono essere risorteggiati.

    Questo è il codice che ho scritto:

    Codice PHP:
    // Controllo che il random avvenga una volta ogni 24 ore

            //$flagEsegui = false;
            
    $text=fopen("random24h.txt","rw");
            
    $lastday fgets($text,255); //valore preso dal file
            
            
    fclose($text);
            
            
    //$arrday = getdate();
            //$today = $arrday['mday']; //valore del giorno corrente

            
    if((time()- $lastday) > 86400){
            
                
    //Eseguo le nuove estrazioni
                        
                        //Azzero tutti i campi estratto
                        
    $query "UPDATE link SET estratto = false";
                        
    $result mysql_query($query);
                        
                        
    // LINK DELLA CATEGORIA 1 LUI LEI
                        
    $query "SELECT * FROM link WHERE pos_cat=1 ORDER BY RAND() LIMIT 5";
                        
    $result mysql_query($query);
                                            
                        while (
    $row mysql_fetch_array($result)){                    
                            
    $query2 "UPDATE link SET estratto = true WHERE id= '$row[id]'";
                            
    $result2 mysql_query($query2);
                        }
                        
                        
    // LINK DELLA CATEGORIA 2 UTENTI
                        
                        
    $query "SELECT * FROM link WHERE pos_cat=2 ORDER BY RAND() LIMIT 4";
                        
    $result mysql_query($query);
                                            
                        while (
    $row mysql_fetch_array($result)){                    
                            
    $query2 "UPDATE link SET estratto = true WHERE id= '$row[id]'";
                            
    $result2 mysql_query($query2);
                        }
                        
                        
    // LINK DELLA CATEGORIA 3 SCUOLA
                        
                        
    $query "SELECT * FROM link WHERE pos_cat=3 ORDER BY RAND() LIMIT 5";
                        
    $result mysql_query($query);
                                            
                        while (
    $row mysql_fetch_array($result)){                    
                            
    $query2 "UPDATE link SET estratto = true WHERE id= '$row[id]'";
                            
    $result2 mysql_query($query2);
                        }
                        
                        
    // LINK DELLA CATEGORIA 4 GENERALE
                        
                        
    $query "SELECT * FROM link WHERE pos_cat=4 ORDER BY RAND() LIMIT 5";
                        
    $result mysql_query($query);
                                            
                        while (
    $row mysql_fetch_array($result)){                    
                            
    $query2 "UPDATE link SET estratto = true WHERE id= '$row[id]'";
                            
    $result2 mysql_query($query2);
                        }
                
                
    // imposto il nuovo valore nel file di testo
                
                
    $textfopen("random24h.txt","w"); 
                
    fwrite($texttime());
                
                } 
    Sembra funzionare bene, però succede una cosa a cui non riesco a trovare spiegazione:
    succede che ad un'orario imprecisato invece che estrarre 5 link lo script me ne estrae solo 4!!
    Poi dopo un certo periodo di tempo tutto ritorna a posto, con 5 link estratti
    Mentre si verifica il problema ho anche controllato nel db: effettivamente solo 4 link hanno settato il campo "estratto" sul valore true.
    Inspiegabilmente dopo un po' di tempo tutto torna a funzionare.
    A cosa può essere dovuto? Possono influire le impostazioni dell'ora sul server?

  2. #2

    Una domanda .........

    Ciao.
    Scusa ma quanti valori vuoi recuperare
    con la select
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  3. #3
    Utente di HTML.it L'avatar di garlick
    Registrato dal
    Dec 2001
    Messaggi
    385
    intendi questa?

    Codice PHP:
     $query "SELECT * FROM link WHERE pos_cat=1 ORDER BY RAND() LIMIT 5"
    Qui ho bisogno solo dell'id in teoria, quindi potrei fare SELECT id FROM invece che SELECT * FROM


    Però non penso sia questo il problema giusto?

  4. #4

    Dicevo per.....

    Ciao.
    Scusa ma sto andando per tentativi
    mi pareva + utile usare
    mysql_fetch_row
    invece di
    mysql_fetch_array
    e per quanto riguarda
    il recupero del valore del
    file è una questione di gusti
    ma pe io preferisco
    file_get_contents con una rtrim
    se hai riportato tutto il codice
    ti manca se non sbaglio fclose
    nel if.
    Per quanto riguarda il problema
    mi sembra una bella gatta da pelare
    ma guarda un po se quello
    che ho scritto ti può tornare utile.
    Stammi bene.
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5

    Come non detto ..........

    Avevo capito che dovevi
    estrarre solo una row per
    cat invece ne estrai 5
    Sorry.
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  6. #6

    La ributto lì ....

    Ah rieccomi ..........
    Dunque sempre sull'onda
    (di sparar c.....e) non è
    che dà noia utilizzare sempre
    $query piuttosto che $query1
    $query2 $query3 .............
    Mah sono le uniche cose che
    mi sono venute in mente
    Ah scusa il granchio
    Stammi bene
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  7. #7

    Siccome ...........

    Ri-ciao.
    Mi viene in mente che
    quando recuperi il valore
    nel file ti restituisce una string
    potresti provare con
    (int) $value.
    Stammi bene e fammi sapere.
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  8. #8
    non è qui che al posto di essere 4 dovrebbe essere 5?

    // LINK DELLA CATEGORIA 2 UTENTI

    $query = "SELECT * FROM link WHERE pos_cat=2 ORDER BY RAND() LIMIT 4";
    $result = mysql_query($query);
    visitate http://camicio.altervista.org per caxxate varie :d

  9. #9
    Utente di HTML.it L'avatar di garlick
    Registrato dal
    Dec 2001
    Messaggi
    385
    @ Whisher:

    Grazie mille per le tue proposte

    Avevo capito che dovevi
    estrarre solo una row per
    cat invece ne estrai 5
    Sorry.
    si esatto.

    non è
    che dà noia utilizzare sempre
    $query piuttosto che $query1
    $query2 $query3
    ci ho pensato, eppure non mi sembra che c'entri qualcosa, tanto una volta che sovrascrivo la variabile $query2 l'update dovrebbe essere già avvenuto no?


    Mi viene in mente che
    quando recuperi il valore
    nel file ti restituisce una string
    potresti provare con
    (int) $value.
    Anche questo è vero, però se dipendesse da questo lo script non funzionerebbe in nessuna occasione, invece qui funziona bene, solo in un determinato momento dà questo problema. Comunque provo a fare un casting della variabile come suggerisci.

    @ camicio109


    non è qui che al posto di essere 4 dovrebbe essere 5?

    // LINK DELLA CATEGORIA 2 UTENTI

    $query = "SELECT * FROM link WHERE pos_cat=2 ORDER BY RAND() LIMIT 4";
    $result = mysql_query($query);

    No, qui è giusto 4 perchè per questa categoria ne devo visualizzare 4 e non 5. Anche qui però si verifica l'errore, perchè nell'update non ne vengono sempre sorteggiati 4.


    Grazie ragazzi per le risposte, speriamo di riuscire a capirci qualcosa

  10. #10
    Utente di HTML.it L'avatar di garlick
    Registrato dal
    Dec 2001
    Messaggi
    385
    Dunque ho appena scoperto che se modifico a mano il file di testo nel quale è salvato il time() e per esempio ci metto io il valore 0 (così triggera), lo script giustamente riesegue il sorteggio e tutto funziona bene VVoVe:

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.