Newsgroup: it.comp.www.php
Titolo: [?] - time out strano

Ciao a tutti,
    rieccomi qui con le mie domande "bizzarre ?"
    allora, cerco di spiegarmi nel miglior modo possibile =)
    - ho fatto un semplice form per l'inserimento di alcuni url in un db (e
fin qui nulla di strano)
    - in un secondo momento ho implementato il controllo per vedere se un
url era stato già inserito (e questo è stato portato felicemente a termine).
    - a questo punto però mi trovo dei link doppi nel db (inseriti quando
non c'era il controllo) e voglio mettere a video solo i doppioni per
decidere quali devono essere eliminati.
    per maggiore chiarezza riporto prima lo shema del db che ho creato. Ci
sono 3 tabelle
        1° tabella
            Categorie
                ID                int(3)    auto incrementato
                Descrizione  varchar(100)
        2° tabella
            Sottocategorie
                ID                int(3)    auto incrementato
                IDCat           int(3)
                Descrizione  varchar(100)
        3° tabella
            Link
                ID                int(3)    auto incrementato
                IDCat           int(3)
                IDSCat        int(3)
                Descrizione  varchar(100)
                Url               varchar(100)
    praticamente 3 tabelline stupide normalizzate per non avere dati
ridondanti, Ok?
    nella pagina "cerca doppioni" inserisco questo codice PHP
  <?
  // Ok è una variabile che mi serve per sapere se l'elemento è stato già
esaminato
  $Ok="";
  $db=mysql_connect("127.0.0.1", "aaa", "bbb");
  // ricavo l'elenco completo dei link ordinati per url
  $sql="SELECT * FROM link order by URL";
  $result1=mysql_db_query("database",$sql,$db);
  while ( $array1 = mysql_fetch_array($result1)) {
    //se l'elemento non è stato ancora processato allora vado a controllare
se c'è un doppione per quel link
   if ($Ok!==$array1[4]){
    $sql="SELECT * FROM (link INNER JOIN categorie ON link.idcat =
categorie.ID) INNER JOIN sottocategorie ON link.idscat = 
sottocategorie.id
where link.url=\"".$array1[4]."\" order by link.url";
    $result=mysql_db_query("database",$sql,$db);    //<-- linea che da
l'errore riportato sotto
    $trovati = mysql_num_rows($result);
    //se trovo almeno 2 elementi per quel link allora metto a video tutti i
doppioni trovati
    if ($trovati>1){
     while ( $array = mysql_fetch_array($result)) {
        //metto a video i doppioni, tagliato per leggibilità
     }
    }
   }
   //segno che l'url è stato esaminato
   $Ok=$array1[4];
  }
  mysql_close($db);
  ?>
quando eseguo la pagina, mi viene restituito l'errore
Fatal error:  Maximum execution time of 30 seconds exceeded in NOMEPAGINA on
line NUMEROLINEA
la linea è l'esecuzione della seconda query
    $result=mysql_db_query("database",$sql,$db);
Non sto capendo per quale motivo dovrebbe andare in time out, anche perchè
mi vengono restituiti una 50 di risultati e poi si blocca.
    Mi sapete dare una mano ?
Spero di essere stato sufficientemente chiaro =/
Grazie 1000 per ogni eventuale risposta,
        ciao da Rocco

 NOMEPAGINA on line NUMEROLINEA
Aumenta il valore di max_execution_time nel file php.ini (oppure
impostalo a 0).
Ciao
--
Marco J

 ha scritto nel messaggio
news:iYM2a.176270$0v.48...@news1.tin.it...

    Ho un piccolo problema nel compiere questa operazione ...
        sul PC "server" che sto usando per sviluppare posso smanettare come
mi pare ed avevo già pensato ad una cosa del genere ...
        il problema si ripresenta quando dovrò mettere le pagine in linea
... penso che manco se prego in cinese mi fanno toccare il php.ini =)
        non c'è la possibilità di farlo solo per quella pagina con qualche
istruzione ?
Grazie per la risposta ...
    ciao, Rocco

 qualche istruzione ?
Esiste la funzione set_time_limit(), ma se in php.ini e' impostato
il "safe mode" non puoi utilizzarla.
Ciao

 istruzione ?
    ho trovato
        set_time_limit(120);
        così aspetta 2 minuti prima di scocciarsi di aspettare =)
        però non mi spiego ancora perchè si impalla sulla seconda query.
        Questa query se da risultati, ne darà al massimo 3 o 4 (ma sto
esagerando) ... invece è la prima query che deve restare in vita per tutto
il tempo di elaborazione.
        Evidentemente ancora non mi è chiaro il lavoro che fa il parser PHP
=)
Ciao e grazie a tutti ...
    P.S. se siete a conoscenza di un metodo alternativo per risolvere il
problema vi prego di farmelo conoscere. Sono ancora un poppante con il PHP
ed ogni informazione e/o dritta e/o suggerimento è bene accetto =)
    Ciao, Rocco

 ha scritto nel messaggio
news:MKO2a.235589$AA2.9...@news2.tin.it...

    mmmmmmmmmmmmmmmmmmmmmmm....................................
    mi sa che devo farmi dire tutte le impostazioni del server ed impostare
il mio PC"server" pari pari a quello.
    però una cosa non ho capito (una ? sono ottimista =)
        se su un server ho 2 siti (faccio un caso semplice)
            il primo deve girare con un php.ini settato nel modo A
            il primo deve girare con un php.ini settato nel modo B
        si può fare ... esiste un work around per questo tipo di casi ... o
mi attacco e tutti e due girano in un modo solo ?
    IIS (non so apache) permette di settare alcune cosette del sito, ma il
php.ini è comunque unico ... come faccio a settare le due cose ?
    O più semplicemente ... non ho capito na mazza di tutto quanto ?    <-
penso che sia la risposta più vicina alla realtà =)
    Ciao, Rocco

 
sottocategorie.id
 where link.url=\"".$array1[4]."\" order by link.url";
Se, da come ho capito, lo script serve solo a te per eliminare i
doppioni, prova a fare una query senza INNER JOIN e guarda se gira.
Tutt'al piu', se categorie e sottocategorie non sono in quantita'
esagerata, le puoi inserire in un paio di array richiamandole come
$categoria[$array1["idcategoria"]]
ciao
Marco
-- 
bernama -at- libero -punto- it
Azzosecondo: unita' di misura del tempo trascorso tra l'aver premuto
il bottone "INVIA" e l'essersi accorti di non aver completato il msg.
M.B.
+- PHPRndSig 0.02 --------------------------------------------17/71-+