2012-11-28 18 views
5

Quindi, provo a ottenere xml-file con arricciatura dall'URL. Il fatto è che il file viene generato su richiesta tramite script, che richiede fino a 80-100 secondi e quindi il mio ricciolo cade con un errore di timeout.Timeout di arricciatura durante il download di xml

URL simile a questa:

https://domain/mancgi/report?params&out=xml 

ho cercato di impostare CURLOPT_TIMEOUT e CURLOPT_CONNECTTIMEOUT, e anche per set_time_limit() script stesso (che funziona bene), ma nulla è cambiato - ancora timeout.

codice Curl assomiglia a questo:

set_time_limit(1000); 
$curl = curl_init($url); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 0); 
curl_setopt($curl, CURLOPT_TIMEOUT, 300); 
$xml = curl_exec($curl); 

qualcuno ha qualche idea?

+0

avete bisogno per aumentare il limite di tempo di esecuzione di script da impostazione del server. –

+0

Che tipo di timeout stai ottenendo e come lo sai? Fornire dettagli per favore – Ranty

+0

Il tempo di esecuzione è annullato da set_time_limit() in base a phpinfo(), ma anche se non lo è - di default è impostato su 180 secondi, il che è sufficiente da solo. – user976258

risposta

1

Credo che si potrebbe colpire il default_socket_timeout nel php.ini, che è di 60 secondi per impostazione predefinita.

Provare a cambiare e vedere se funziona. Altrimenti, prova questo.

$xml = file_get_contents($url); 

Facendo questo utilizzerà wrapper che potete leggere qui: http://php.net/manual/en/wrappers.php

E si dovrà garantire, inoltre, che i wrapper richiesti per l'utilizzo da parte file_get_contents sono attivate in php.ini (che di solito sono di abilitazione quindi dovresti essere ok, ma controlla per sicurezza).

Utilizzando che possono bypassare il timeout si verificano se il timeout è applicata da CURL e ricordarsi di regolare la default_socket_timeout in php.ini da 60 secondi a qualche altra cosa che credo potrebbe essere il vostro problema

L'INI impostazioni per Controllare

http://php.net/manual/en/filesystem.configuration.php

+0

@ user1834735, @VBAssassin Spiacente, intendevi 'file_get_contents()'? Perché non conosco nessuna funzione con il nome di 'get_file_content() 'e il mio Google non li conosce neanche. E 'file_get_contents()' non farà il trucco. Dopo un brainstorming di diverse ore con la maggior parte dell'ufficio siamo giunti alla conclusione che questo problema è una rara combinazione di configurazione di Apache, direttive php.ini e sfortuna, per lo più quindi stiamo andando con Pearl questa volta e sto chiudendo la domanda. Ma grazie a tutti voi per il vostro tempo, comunque, siete stati davvero d'aiuto. – user976258

+0

Perla? Intendi Perl? ;) corretto l'errore di battitura. "Dopo parecchie ore di brainstorming con la maggior parte dell'ufficio" Davvero?Su qualcosa del genere? :/Non c'è uno sviluppatore di PHP senior come senior dovrebbe conoscere tutti i posti in cui cercare questo tipo di problema. Buona fortuna :) – VBAssassin

+0

Sì, Perl, mah male. E sì, davvero, per qualcosa di simile. Innanzitutto, in realtà non abbiamo uno sviluppatore PHP senior - REALMENTE - e in secondo luogo, è stata una giornata molto noiosa, quindi questa è stata una specie di intrattenimento per tutti noi :) Grazie comunque, buona fortuna anche a te. – user976258

0

L'URL è una richiesta GET? Se quindi cercate

$xml = get_file_content($url); 
+0

Non esiste tale funzione in php – Piero

Problemi correlati