<?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简单多很多了。。。