使用curl_multi_exec并发请求外部接口
有时候在一个PHP方法中要多次调用外部的接口,为了优化代码,提高效率,我们不妨使用curl_multi_exec并发处理多个请求,这样可以明显地提高获取响应数据的速度,减少程序执行的时间,下面是一个实际运行的例子。
<?php
/**
* 使用curl并行发送多个请求获取数据
* @param array $urls 多个请求数组
* @return array
*/
function sendMultiRequest(array $urls)
{
$conn = [];
$res = [];
//创建批处理curl句柄
$mh = curl_multi_init();
foreach ($urls as $k => $item) {
$conn[$k] = curl_init(); //初始化各个子连接
//...
可以在此基础上结合正则表达式做成更好的效果,希望大家能分享一下Xmlhttp的session共享技术 <html> <head> <title>AUTOGET</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body bgcolor="#FFFFFF" style="font-family:Arial;font-size:12px"> <% '================================================= 'FileName: Getit.Asp 'Intro : Auto Get Data From Remote&n...
在实际的应用中,经常会遇到一些特殊的情况,比如需要新闻,天气预报,等等,但是作为个人站点或者实力小的站点 我们不可能有那么多的人力 物力 财力去做这些事情,怎么办呢?
好在互联网是 资源共享的,我们可以利用程序 自动的把别的站点的页面抓取回来经过处理后被我们所利用。
用什么呢,那个战友给的是不行的,其实在php有这个功能,那就是用curl库。请看下面的代码!
<?php
$ch = curl_init ("http://dailynews.sina.com.cn");
$fp = fopen ("php_homepage.txt", "w");
curl_setopt ($ch, CURLOPT_FILE, $fp);
curl_setopt ($ch, CURLOPT_HEADER, 0);
...
在实际的应用中,经常会遇到一些特殊的情况,比如需要新闻,天气预报,等等,但是作为个人站点或者实力小的站点 我们不可能有那么多的人力 物力 财力去做这些事情,怎么办呢?
好在互联网是 资源共享的,我们可以利用程序 自动的把别的站点的页面抓取回来经过处理后被我们所利用。
用什么呢,那个战友给的是不行的,其实在Php有这个功能,那就是用curl库。请看下面的代码!
<?php
$ch = curl_init ("http://dailynews.sina.com.cn");
$fp = fopen ("php_homepage.txt", "w");
curl_setopt ($ch, CURLOPT_FILE, $fp);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_exec...
function String_html($url) //fopen方式获取url对应的html代码,返回没有过滤html的正文
{
$OutString = "";
$fp = fopen($url,"r");
while(!feof($fp))
{
$OutString .= fgets($fp);
}
fclose($fp);
return $OutString;
}
function match_google($url) {
$html = googleHTML("www.google.cn", $url);
preg_match_all( "/<b>([0-9,]+)</b>/" ,$html, $res);
//print_r($res[0]);
//print_r($res[1]);
return $res[1][0];
}
//由于Google对php的自动抓取函数fopen不响应,所以采用socket的方式请求数据
function googleHTML($host, $url) {
$httph...
功能:iis日志分析,分析出访问IP总数,搜索引擎抓取次数将日志文件放在网站根目录,并改名为log.log。//打开日志文件$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];$fp = fopen("$DOCUMENT_ROOT/log.log",'rb');if ( !$fp ){echo '打开文件失败';exit;} //分析每行日志$num_ip = 0; //访问IP总数$ip = array(); //IP数据数组,其中ip[$i][0]为IP地址、ip[$i][1]为该地址出现次数while ( !feof($fp) ){$line = fgets($fp,1001);if ( substr($line,0,1) == '#' ){//获取日志生成时间if ( substr($line,0,5) == '#Date' ){$date_info = explode(' ',$line);//echo '日志生成时间:'.$date_i...