<?php
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, 'http://www.domain.com/');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_POST, 1 );//設置post請求
curl_setopt($ch, CURLOPT_HEADER, 0 ) ;
curl_setopt($ch,CURLOPT_POSTFIELDS, "param=".$param);//param爲請求的參數
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
?>
/**
*
* @Description 批量請求獲得內容
* @param @param array $urls
* @param @param String $param
* @return String
*/
public function remoteByRolling($urls, $param) {
if (! is_array ( $urls ) || count ( $urls ) == 0)
return false;
$queue = curl_multi_init ();
$map = array ();
foreach ( $urls as $url ) {
$this->remoteByPost ( $url, $param );
curl_multi_add_handle ( $queue, $this->ch );
$map [$url] = $this->$ch;
}
$active = null;
// 執行批處理句柄
do {
$mrc = curl_multi_exec ( $queue, $active );
} while ( $mrc == CURLM_CALL_MULTI_PERFORM );
while ( $active > 0 && $mrc == CURLM_OK ) {
//curl_multi_select:等待所有cURL批處理中的活動連接
if (curl_multi_select ( $queue, 0.5 ) != - 1) {
do {
$mrc = curl_multi_exec ( $queue, $active );
} while ( $mrc == CURLM_CALL_MULTI_PERFORM );
}
}
/* get data */
$responses = array ();
foreach ( $map as $url => $ch ) {
if (curl_error ( $ch ) == '') {
$responses [$url] = curl_multi_getcontent ( $ch ) ;
}else{
error_log("curl error");
}
curl_multi_remove_handle ( $queue, $ch );
curl_close ( $ch );
}
}
更多參數設置:http://www.php.net/manual/zh/function.curl-setopt.php還可以支持併發。。http://www.searchtb.com/2012/06/rolling-curl-best-practices.html
哈哈,php真簡單,比java簡單多很多了。。。