PHP の落とし穴は、同じ目的を達成するためにさまざまな方法を使用できることです。たとえば (file_get_contents と fopen、今述べたcurl と fsockopen、そしてもちろんソケット)、経験の少ないプログラマーにとってこれを選択するのは確かに困難です。 ,
そのため、多くの場合、比較する必要があります。インターネット上で無責任なリソースを検索し、予測を立てます。次に、自分で比較して重さを量ります。
以下は抜粋です:
function curlRequest($url, $isPost = false, $param = array(), $cookie = null, $header = null, $referer = "", $timeout = 60) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); if (is_array($header) && !empty($header)) { //设置header $set_head = array(); foreach ($header as $k => $v) { $set_head[] = "$k:$v"; } curl_setopt($ch, CURLOPT_HTTPHEADER, $set_head); } else { curl_setopt($ch, CURLOPT_HEADER, 0); } if ($isPost === true) { curl_setopt($ch, CURLOPT_POST, $isPost); curl_setopt($ch, CURLOPT_POSTFIELDS, $param); } if (!empty($cookie)) { if (is_array($cookie)) { $cookies = implode(';', $cookie); } else { $cookies = $cookie; } curl_setopt($ch, CURLOPT_COOKIE, $cookies); } if (!empty($referer)) { curl_setopt($ch, CURLOPT_REFERER, $referer); } if( $timeout > 0 ) { curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $ret = curl_exec($ch); if (curl_errno($ch)) { $ret = ''; } curl_close($ch); return $ret; }
一般的なプロセスでは、その複雑なプロセスは使用しません:
<?php $startTime = microtime(true); $url = "http://api.k780.com:88/?app=weather.today&weaid=1&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=xml"; for($i = 0 ; $i < 2; $i++){ $handle = curl_init($url); //$defaultHeader = array('Accept-encoding: gzip, default'); curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); //curl_setopt($handle, CURLOPT_HTTPHEADER, $defaultHeader); curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($handle, CURLOPT_TIMEOUT, 10); $xml = curl_exec($handle); if($i % 10 == 0){ echo "."; } curl_close($handle); } $endTime = microtime(true); $total = $endTime - $startTime; echo $total; echo curl_error($handle);?>
なお、curl は php xxx.php params_1 などのコンソールでは実行できないことに注意してください。サーバー。
著作権声明: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。