Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012

    La connessione al server è stata annullata durante il caricamento della pagina

    cioa a tutti!

    Non riesco a capire da cosa dipenda questo errore, penso sia un problema di memoria o addirittura di cpu (intesi come risorse...). Premetto che uso Easyphp 1.8 quindi con phph 4.3

    Devo indicizzare delle cartelle e sottocartelle, il tutto memorizzato su file di testo.Lo script crea tre array, con centinaia di elementi.. nello script c'è sicuramente un errore,ma lo vedo per una frazione di secondo, perchè poi mozilla mi fa vedere la pagina di errore...ecco il codice:

    Codice PHP:
    <?php
    function list_directory($dir
           {
           
    $file_list '';
           
    $stack[] = $dir;
           while (
    $stack
               {
               
    $current_dir array_pop($stack);
               if (
    $dh opendir($current_dir)) 
                   {
                   while ((
    $file readdir($dh)) !== false
                       {
                       if (
    $file !== '.' AND $file !== '..'
                           {
                           
    $current_file "{$current_dir}/{$file}";
                           if (
    is_file($current_file)) 
                               {
                               
    $file_list[] = "{$current_dir}/{$file}";
                               } 
                           elseif (
    is_dir($current_file)) 
                               {
                               
    $stack[] = $current_file;
                               
    $dirs[]=$current_file;
                               }
                           }
                       }
                   }
               }
           return 
    $dirs;
       }


    function 
    list_files($dir
           {
           
    $file_list '';
           
    $stack[] = $dir;
           while (
    $stack
               {
               
    $current_dir array_pop($stack);
               if (
    $dh opendir($current_dir)) 
                   {
                   while ((
    $file readdir($dh)) !== false
                       {
                       if (
    $file !== '.' AND $file !== '..'
                           {
                           
    $current_file "{$current_dir}/{$file}";
                           if (
    is_file($current_file)) 
                               {
                               
    $file_list[] = "{$current_dir}/{$file}";
                               } 
                           elseif (
    is_dir($current_file)) 
                               {
                               
    $stack[] = $current_file;
                               
    $dirs[]=$current_file

                               }
                           }
                       }
                   }
               }
           return 
    $file_list;
       }

    $list_dir=list_directory("archivio/Templates/");
    $list_files=list_files("archivio/Templates/");
    $gruppo=array();
    $sottogruppo=array();
    $ID=array();
    foreach (
    $list_dir as $key=>$cartella)
      {
      
    $blocco=explode("/",$cartella);
      
      if (
    $key>&& $blocco[0]!= $gruppo[($key-1)])
        {
        
    $ID[]=codice(rand(1000,10000));
        
    $gruppo[$key]=$blocco[0];
        }
    if(
    count($blocco)>=2)  
      
    $sottogruppo[$blocco[0]]=$blocco[1];
      }


    function 
    codice($codice)
      {
      global 
    $ID;
      if (
    in_array($codice,$ID))
        
    codice ($codice);
      else
        return 
    $codice;
         
      }
    $line="";
    $indice=fopen('archivio.dwd','w');
    foreach (
    $ID as $key=>$codice);
      {
      
    $line.=$ID[$key]."|".$gruppo[$key];
      foreach (
    $sottogruppo as $sottokey=>$value)
        {
        if (
    $sottokey==$gruppo[$key])
          {
          
    $line.="|".$sottogruppo[$sottokey];
          }
        }
      
    $line.="\n";
      }
    fwrite($archivio,$line);
    fclose ($archivio);
    echo 
    "<pre>";
    print_r($gruppo);
    print_r($sottogruppo);
    echo 
    "</pre>";
    ?>
    qualòcuno sa dirmi da cosa dipenda? ed eventuali impostazioni?? grazie mille
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  2. #2
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    up up gadget post!
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  3. #3
    a me succedeva con un mio script...nn ricordo bene quale fosse il problema...

    però secondo me dovresti prima cercare di capire in che punto lo script va in blocco...

    prova qui

    Codice PHP:
    $list_dir=list_directory("archivio/Templates/"); 
    $list_files=list_files("archivio/Templates/"); 
    $gruppo=array(); 
    $sottogruppo=array(); 
    $ID=array(); 
    foreach (
    $list_dir as $key=>$cartella
      { 
      
    $blocco=explode("/",$cartella); 
       
      if (
    $key>&& $blocco[0]!= $gruppo[($key-1)]) 
        { 
        
    $ID[]=codice(rand(1000,10000)); 
        
    $gruppo[$key]=$blocco[0]; 
        } 
    if(
    count($blocco)>=2)   
      
    $sottogruppo[$blocco[0]]=$blocco[1]; 
      } 
    e qui

    Codice PHP:
    $line=""
    $indice=fopen('archivio.dwd','w'); 
    foreach (
    $ID as $key=>$codice); 
      { 
      
    $line.=$ID[$key]."|".$gruppo[$key]; 
      foreach (
    $sottogruppo as $sottokey=>$value
        { 
        if (
    $sottokey==$gruppo[$key]) 
          { 
          
    $line.="|".$sottogruppo[$sottokey]; 
          } 
        } 
      
    $line.="\n"
      } 
    fwrite($archivio,$line); 
    fclose ($archivio); 
    echo 
    "<pre>"
    print_r($gruppo); 
    print_r($sottogruppo); 
    echo 
    "</pre>"
    andando a tentativi... cioè metti
    Codice PHP:
    die('fin qui funziona!'); 
    subito dopo a
    Codice PHP:
    $list_dir=list_directory("archivio/Templates/"); 
    e piano piano vai avanti...

    lo so...è un metodo molto empirico e macchinoso... però almeno dovresti localizzare in che punto si ferma...


    ciauz

  4. #4
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    ciao ho fatto come dici te e finalmente l' errore l' ho trovato.. andando in crash la connessione non riuscivo a vedere dove era il problema, con lampo di genio sono andato anche a vedere il log error di apache e sono riuscito a sistemare il tutto..

    però ancora non capisco da cosa dipenda il fatto che mi si blocca la connessione!! esiste qualche parametro che mi permetta di gestire queste situazioni?

    il problema era la chiama a questa funzione ricorsiva

    Codice PHP:
    function codice($codice)
      {
      global 
    $ID;
      if (
    in_array($codice,$ID))
        
    codice ($codice);
      else
        return 
    $codice
    l'ho messa a posto
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  5. #5
    :-)
    hmmm nn so se si può evitare il blocco dello script...però credo che in situazioni come questa apache nn possa fare altrimenti...

    ciauzzz

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.