Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Time Excedeed su funzione file_get_contents

    Salve,
    ho creato un ciclo perchè dovrei prelevare dei valori da alcune pagine, quindi ho creato un file con gli urls e poi ho creato un ciclo così:
    Codice PHP:
    $urls file('urls.txt');
    foreach (
    $urls as $url){
            
    $url trim($url);
            
    $html file_get_contents($url);
           
    $parte0 substr($htmlstrpos($html"<td class='field_value'><a"));
            
    $parte1 substr($parte00strpos($parte0"</td></tr><tr><td colspan='"));
            
    $parte trim(str_replace("<td class='field_value'><a"""$parte1));
           
    $categoria0 substr($partestrpos($parte"'>"));
            
    $categoria1 substr($categoria00strpos($categoria0"</a>"));
            
    $categoria trim(str_replace("'>"""$categoria1));

            echo 
    $categoria;

        
    sleep(3);
        }
    ?> 
    Solo che dopo qualche url mi da questo errore:
    Fatal error: Maximum execution time of 30 seconds exceeded in C:\Apache24\htdocs\index.php on line 637

    Se è dovuto al fatto che qualche link potrebbe non funzionare, potreste spiegarmi come trovare questo url oppure come fargli saltare l'operazione per quell'url?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Se c'è un URL non funzionante, per trovarlo ti basta mettere all'inizio del ciclo foreach
    echo $url . "<br>";
    così sai qual'è l'ultimo url su cui stava lavorando, poi provi quell'url da solo, o meglio provi ad aprirlo dal browser e vedi se funziona.

    Il problema potrebbe però essere che proprio lo script ci mette tempo e quindi va in timeout, già quello sleep(3) te ne fa pedere un bel po'.
    Considera che il timeout in genere è di 30 secondi, se ci sono più di 10 url, il solo sleep è sufficiente a sforarlo.
    Ultima modifica di Alhazred; 18-05-2016 a 13:59

  3. #3
    Capisco, però avendo Apache e PHP in locale posso provare ad aumentare il timeout

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Si, cambia il valore di max_execution_time all'interno del file php.ini e poi riavvia Apache.

  5. #5
    Già fatto.. Tutto ok così.. Ho impostato su 0 ed il parametro appena sotto su -1

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.