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.