« | Main | »

最快!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
//这缓存方式怎么和dzpw的有点像?
$contents .= < <

{$fs['id']}=>array(‘type’=>’{$type}’,’setting’=>array({$setting}),’class’=>’{$fs[s_class]}’)

EOT;

sendmail.php
没啥好说的.呵呵,不过支持fsockopen的可真不多.

filehandler.misc.php
$operationcode = “if(@rename(‘{$tmpfile}’, ‘{$dest}’)) {print 1;exit;}”;
这个…..你让偶怎么说?
另外这个安全模式php6删除了,你到时候….:)自己后悔!白写了.

general_funcs.php
function EncodeUtf8(&$code,$srcEnc=”){

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)
奇奇怪怪的,放着好好的serialize不用…
当然效率问题还没有确切的定论.

dv_encoding.class.php
表扬,这里比较人性,留了接口.

dv_clsmain.php
function ChkPost(){

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
GPL授权!!!!!!
论坛必须按照gnu gpl发布,否则….等吃官司.

savepost.php
if( !empty($arrTopicIndex) && is_array($arrTopicIndex) ){

$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
$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运行它们,此外,这两个文件里的对于数据库连接的用户名和密码也需要手动更改;

这样,asp论坛也可以全文索引.

友情提示: 请注意文章的时效性与准确性, 作者不对文章的有效性负责.

Tags:
Bookmark on del.icio.us
Last Modified: August 30, 2006 at 5:32 pm

« | Main | »

5 Comments

  1. xingxing said,

    August 30, 2006 @ 19:07

    有点意思
    哈哈

  2. rf said,

    November 9, 2006 @ 18:33

    rebuild_topic_ft_key.php和rebuild_bbs_ft_key.php文件好像都没有

    也没有build目录

    你下的是什么版本?地址?

  3. fcicq said,

    November 9, 2006 @ 18:37

    呵呵,作为最早发布版本的分析…
    仔细看看发布时间你就知道了.八月 30, 2006 at 17:32:58

    另外,这种东西不用太在意,都有时效性的.

  4. rf said,

    November 13, 2006 @ 15:42

    我在找这个rebuild_topic_ft_key.php和rebuild_bbs_ft_key.php两个文件,你有吗?

  5. fcicq said,

    November 14, 2006 @ 14:10

    应该是没有…..

· TrackBack URI