Visualizzazione risultati 1 fino 7 di 7

Discussione: Timeout durante esecuzione curl

  1. #1
    Guest

    Unhappy Timeout durante esecuzione curl

    Ciao,
    sto facendo uno script che interroga un server remoto con la curl e analizza il risultato.

    Premetto che lo script funziona, infatti quando il server remoto risponde entro i 15 secondi tutto va a meraviglia.

    Quando invece il server remoto impiega più di 15 secondi la curl viene interrotta e restiusce come risultato una stringa vuota.

    Questo l'estratto del codice:

    Codice PHP:
    $fp = fopen($cookie, "w");
    fclose($fp);


    $ch = curl_init();

    $i=0;
    foreach (
    $chain as $url) //chain contiene i due url, uno per l'autenticazione e uno per la pagina target
    {
    curl_setopt ($ch, CURLOPT_URL,$url);
    curl_setopt ($ch, CURLOPT_USERAGENT, $agent);
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt ($ch, CURLOPT_TIMEOUT, 100);
    curl_setopt ($ch, CURLOPT_HEADER, 1);
    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION,1);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
    curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
    if (
    $i == 0)
    {
    curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
    curl_setopt ($ch, CURLOPT_POST, 1);
    }
    else
    {
    curl_setopt ($ch, CURLOPT_POST, 0);
    }
    echo
    "$i:".time()."<br>";
    $result = curl_exec ($ch);
    echo
    "$i:".time()."<br>";
    $i = $i + 1;
    }
    Il risultato dello script quando va male (con le echo) è il seguente:
    Codice:
    0:1243942462
    0:1243942462
    1:1243942463
    1:1243942478
    Al secondo ciclo ($i = 1) la curl dura sempre un massimo di 15 secondi... e il $result a quel punto è una stringa vuota.

    Sapete dirmi se esiste un modo per superare questo limite dei 15 secondi almeno quando si fa una curl_exec?
    Come timeout della curl avevo impostato 100 s.

    Grazie.

  2. #2
    Guest

    Predefinito

    Aggiungo che dopo l'esecuzione della curl_exec che va in timeout il curl_error($ch) mi restituisce tale messaggio "Operation timed out after 15000 milliseconds with 0 bytes received"...
    il 15000 milliseconds non cambia qualsiasi sia il CURLOPT_TIMEOUT che imposto... è questa una limitazione imposta centralmente su AV oppure sto sbagliando qualcosa... per favore aiutatemi

  3. #3
    Guest

    Predefinito

    anch'io ho lo stesso problema. Ho provato a impostare anche le seguenti opzioni

    curl_setopt($ch, CURLOPT_TIMEOUT, 900);
    curl_setopt($ch, CURLOPT_CONNECTIONTIMEOUT, 30);

    ma il messaggio di errore che ricevo è sempre lo stesso:
    Operation timed out after 15000 milliseconds with 0 bytes received

    lo stesso script ieri funzionava.. e funziona pure se lo eseguo in locale sul mio server WAMP.

    Tu hai risolto?

  4. #4
    Guest

    Predefinito

    Non voglio dire fesserie, ma se CURLOPT_CONNECTIONTIMEOUT è collegato al maximum time exceeded, su AV è settato a 15.

  5. #5
    Guest

    Predefinito

    oh, molto probabile.
    che impostazione è il maximum time exceeded di cui parli? è nel php.in?

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

    Predefinito

    Il file php.ini non può essere modificato, alcune opzioni delle curl per motivi di sicurezza sono "bloccate", ad esempio non puoi modficare l'user agent e l'ip.

    Saluti!

  7. #7
    Guest

    Predefinito

    ah uhm grazie,
    avevo solo necessità di aumentare il tempo massimo ma se non si può pace.

    Ciao!

Regole di scrittura

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