最快!dvbbs.php beta1 代码简单分析
by fcicq ,严禁任意形式转载
几个小问题的分析:
dv_clssql.php
当然现在是支持mysql,并且兼容这么多版本,难道就不能优化一下吗?按需配置.
dv_code.php
优化的地方还是没出来.
sendmail.php
小细节:
if( !defined(‘ISDVBBS’) ){
header(‘HTTP/1.0 404 Not Found’);
exit;
}
这个地方用的着这样吗?require一个检测文件过来就可以了.
boardcache.class.php
function _filePutContents(&$contents,$file,$append=false){
if( function_exists(‘file_put_contents’) ){
if ($append===false) { //这几个三元根本就没大用.
return ( @file_put_contents($file, $contents) > 0 ? true : false );
} else {
return ( @file_put_contents($file, $contents, FILE_APPEND) > 0 ? true : false );
}
} else{
if( $fp = fopen($file, ($append !== false ? ‘ab’ : ‘wb’)) ){
@flock($fp, 2);
$writed = @fwrite($fp, $contents, strlen($contents));
@fclose($fp);
@chmod($file,0755);
return ( $writed === false ? false : true ); //====>你看有这么用的吗?好奇怪
} else{
return false;
}
}
}//end function _filePutContents {$fs['id']}=>array(‘type’=>’{$type}’,’setting’=>array({$setting}),’class’=>’{$fs[s_class]}’) EOT; sendmail.php filehandler.misc.php general_funcs.php return urlencode($code); global $fsetting; if( $srcEnc === ” ){ $srcEnc = $fsetting['lang']; } if( $srcEnc == ” ){ $srcEnc = ‘gb2312′; } return iconv($srcEnc,’utf-8′,$code); }//end funciton EncodeUtf8 你不多留一种方式吗?文本文件转的方法到处都有.抄也要抄来,呵呵 function &Dv_varExport(&$mixedvar, $return = false, $usedvcode = false) dv_encoding.class.php dv_clsmain.php global $_SERVER; if( empty($_SERVER['HTTP_REFERER']) || strpos($_SERVER['HTTP_REFERER'],$_SERVER['SERVER_NAME']) !== 7 ){ return false; } else{ return true; } } function IsWebSearch(){ $useragent = strtolower($_SERVER["HTTP_USER_AGENT"]); $searchs = array(‘google’,'isaac’,’surveybot’,'baiduspider’,'yahoo’,'yisou’,'3721′,’qihoo’,'daqi’,'ia_archiver’,'p.arthur’,'fast-webcrawler’,'java’,'microsoft-atl-native’,'turnitinbot’,'webgather’,’sleipnir’); foreach( $searchs as $val ){ if( strpos($useragent,$val) !== false ){ return true; break; } } return false; } 告诉你.只要被逮住内容不同.就小心啦… archive.php savepost.php $topicindex = $db->escape_string(implode(‘ ‘,$arrTopicIndex)); if( $topicindex !== ” ){ $db->query(“UPDATE {$dv}topic_ft SET topicindex=’{$topicindex}’ WHERE topicid=’{$RootID}’”); } else{ $db->query(“DELETE FROM {$dv}topic_ft WHERE topicid=’{$RootID}’”); } } query.php 到这里就全明白了.这个全文索引….:) 最后:摘段小说明. 这样,asp论坛也可以全文索引. 友情提示: 请注意文章的时效性与准确性, 作者不对文章的有效性负责.
//这缓存方式怎么和dzpw的有点像?
$contents .= < <
没啥好说的.呵呵,不过支持fsockopen的可真不多.
$operationcode = “if(@rename(‘{$tmpfile}’, ‘{$dest}’)) {print 1;exit;}”;
这个…..你让偶怎么说?
另外这个安全模式php6删除了,你到时候….:)自己后悔!白写了.
function EncodeUtf8(&$code,$srcEnc=”){
奇奇怪怪的,放着好好的serialize不用…
当然效率问题还没有确切的定论.
表扬,这里比较人性,留了接口.
function ChkPost(){
弄半天还是没改过来.
GPL授权!!!!!!
论坛必须按照gnu gpl发布,否则….等吃官司.
if( !empty($arrTopicIndex) && is_array($arrTopicIndex) ){
$Record_Count = $db->scalar(“SELECT {$SQL_CACHE} COUNT(1) FROM {$dv}topic_ft AS ft WHERE MATCH(ft.topicindex) AGAINST(‘{$ftKeyWords}’ IN BOOLEAN MODE) “.($boardid>0?” AND ft.boardid=’{$boardid}’”:”).” AND ft.posttable=’{$stable}’”);
2). 开启全文索引说明:
A、需要服务器管理员在mysql的配置文件(my.cnf或my.ini)里的[mysqld]配置节添加ft_min_word_len = 2;
B、对于已存在数据的论坛(即在安装并使用了一段时间后,ft_min_word_len才被设为2的情况),需要对dv_topic_ft和dv_bbs_ft表重新建立全文索引;此时,要使用build目录下的rebuild_topic_ft_key.php和rebuild_bbs_ft_key.php文件来完成索引的重建工作,这两个文件必须要以CLI的模式运行,不可能通过WEB运行它们,此外,这两个文件里的对于数据库连接的用户名和密码也需要手动更改;
Tags:
Permalink Bookmark on del.icio.us
Last Modified: August 30, 2006 at 5:32 pm
xingxing said,
August 30, 2006 @ 19:07
有点意思
哈哈
rf said,
November 9, 2006 @ 18:33
rebuild_topic_ft_key.php和rebuild_bbs_ft_key.php文件好像都没有
也没有build目录
你下的是什么版本?地址?
fcicq said,
November 9, 2006 @ 18:37
呵呵,作为最早发布版本的分析…
仔细看看发布时间你就知道了.八月 30, 2006 at 17:32:58
另外,这种东西不用太在意,都有时效性的.
rf said,
November 13, 2006 @ 15:42
我在找这个rebuild_topic_ft_key.php和rebuild_bbs_ft_key.php两个文件,你有吗?
fcicq said,
November 14, 2006 @ 14:10
应该是没有…..