当前位置: 首页 > 图文教程 > 网络编程 > PHP > php采集速度探究总结(原创)

PHP
工作笔记:配置MySQL为高可用集群 (1)
MySQL (C API)VC实例及代码下载 (1)(5)
MySQL (C API)VC实例及代码下载 (1)(4)
MySQL (C API)VC实例及代码下载 (1)(3)
MySQL (C API)VC实例及代码下载 (1)(2)
MySQL (C API)VC实例及代码下载 (1)
用JSP连接mysql数据库的方法 (1)(2)
用JSP连接mysql数据库的方法 (1)
MySQL数据库账户授权的相关管理解析 (1)(2)
MySQL数据库账户授权的相关管理解析 (1)
SAP MaxDB MySQL修补数据库严重漏洞
MySQL研发中心成立发布会会后访问整理 (1)(2)
MySQL研发中心成立发布会会后访问整理 (1)
MySQL中SQL-TEXT、DATE和SET数据类型
MySQL存在权限提升及安全限制绕过漏洞
MySQL 卸载的问题
windows下安装、卸载mysql服务
如何正确卸载MySQL
MySQL手册版本 5.0.20-MySQL优化(四) (1)(5)
MySQL手册版本 5.0.20-MySQL优化(四) (1)(4)

PHP 中的 php采集速度探究总结(原创)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 118 ::
收藏到网摘: n/a

这个以前有人发帖子研究过了,但是之后只是说出了哪个函数快并没有总结,研究问题的目的是要总结方法。
注意:下面的所有函数都没有用正则
以上为取出第一个匹配的三个函数,实现相同的目的
function str_cut($str ,$start, $end) {//取出第一个匹配,效率最高,先分割再替换
$content = strstr( $str, $start );
$content = substr( $content, strlen( $start ), strpos( $content, $end ) - strlen( $start ) );
return $content;
}
function str_cut1($str ,$start, $end) {//取出第一个匹配,效率中,直接查找替换
$x = strpos($str, $start);
return substr($str, $x+strlen($start), strpos($str, $end)-$x+strlen($end));
}
function str_cut3($content,$start,$end){//取出第一个匹配,字符串越大,速度越慢!
$my = explode($start,$content);
$my = explode($end,$my[1]);
return $my[0];
}
以下为取出所有匹配的3个函数(全部原创),实现相同的采集目的

function strcut($str ,$start, $end) //先搜个数,速度中等
{
if( strpos( $str , $start ) )
{
$sum = substr_count($str,$start);
$carr = array();
for($i=0;$i<$sum;$i++){
$str = strstr( $str, $start );
$str = substr( $str, strlen($start));
$carr[] = substr( $str, 0, strpos( $str, $end ) );
}

}
return $carr;
}
function str_cut_all($str ,$start, $end,$carr=array()) //递归,运行效率最慢!
{
if( strpos( $str , $start ) )
{
$str = strstr( $str, $start );
$str = substr( $str, strlen($start));
$carr[] = substr( $str, 0, strpos( $str, $end ) );
if( strpos( $str , $start ) )
{
return str_cut_all($str ,$start, $end ,$carr );
}
}
return $carr;
}
function my_Ca($content,$start,$end){//取出所有匹配,效率最快,因为只读一次,字符串越大越明显
$m = explode($start,$content);
$a = array();
for( $i = 1;$i < count($m);$i++ )
{
$my = explode($end,$m[$i]);
$a[] = $my[0];
unset($my);
}
return $a;
}
注意my-Ca比较
如果这样写:
function my_Ca($content,$start,$end){//取出所有匹配
$m = explode($start,$content);
$a = array();
$sum = count($m);
for( $i = 1;$i < $sum;$i++ )
{
$my = explode($end,$m[$i]);
$a[] = $my[0];
unset($my);
}
return $a;
}
速度又快了一些!

由上可以看出,并不是数组处理函数(explode)比字符串处理函数(substr等)慢,也不是那个比这个快,因为在匹配多个数据的时候匹配的越多数组函数的优势越大,处理字符串就象切蛋糕一样越切越小。匹配单个字符串运用切的思路去做也是一样的效果(str_cut)。关键还是在---算法!算法写的好,什么函数都是一样哦!