PHP Curl Lentezza

Per qualche ragione la mia chiamata al ricciolo è molto lenta. Ecco il codice che ho usato.

$postData = "test" $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); $result = curl_exec($ch); 

L'esecuzione di questo codice richiede in media 250ms per terminare. Tuttavia, quando apro l'url in un browser, firebug dice che servono solo circa 80ms.

C'è qualcosa che sto sbagliando? O è questo il sovraccarico associato a PHP Curl.

È la chiamata a

 curl_exec 

Questo sta prendendo tutto il tempo.

AGGIORNARE:

Quindi ho capito subito dopo aver postato questo se ho impostato l'opzione di ricciolo

 curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); 

Rallenta in modo significativo

 curl_exec 

I dati del post potrebbero essere qualsiasi cosa e lo rallenteranno.

Anche se ho impostato

 curl_setopt($ch, CURLOPT_POST, false); 

È lento.

Cercherò di aggirare il problema aggiungendo semplicemente i parametri all'URI come string di query.

SECONDO AGGIORNAMENTO:

Confermato che se chiamassi l'URI usando GET e passassi i parametri come string di query, sarebbe molto più veloce di usare POST e inserire i parametri nel corpo.

CURL ha alcuni problemi con le ricerche DNS. Prova a utilizzare l'indirizzo IP invece del nome di dominio.

Curl ha la capacità di dire esattamente per quanto tempo each pezzo ha preso e where è la lentezza (ricerca del nome, connessione, tempo di trasferimento). Usa curl_getinfo ( http://www.php.net/manual/en/function.curl-getinfo.php ) dopo aver eseguito curl_exec.

Se il curl è lento, generalmente non è il codice PHP, è quasi sempre collegato alla networking.

generalmente è accettabile quando si caricano contenuti o si postano alla fine del mondo. Le chiamate di arricciatura sono direttamente proporzionali alla velocità della networking e al throughput del server web

Le funzioni di arricciatura in php utilizzano direttamente lo strumento da row di command di arricciatura in sisthemes * nix.

Quindi in realtà dipende solo dalla velocità della networking poiché in generale l'arricciatura stessa è molto più veloce di un browser web poiché, di default, non carica alcun dato aggiuntivo come le immagini incluse, i fogli di stile ecc. Di un sito web.

È ansible che tu non sia a conoscenza del fatto che le performance della networking del server su cui stavi testando il tuo script php è decisamente peggiore di quella sul tuo computer locale where stavi testando con il browser. Pertanto entrambe le misurazioni non sono realmente confrontabili.