hack drupal url function:使性能进一步提升

July 17th, 2011 by 黎 浩江 No comments »

hack逻辑:URL中含有非ASCII字符的文章,是不能被boost静态化化的,要还原成node/$id 这样的形式。

前言:站点描述

1.http://oddsfun.com

这是一个drupal写的采集站,同内容不同域名几个站每天正在为我创汇5美金,由于是采集,所以必然会采到一些不一定理想的内容。

我的初衷是都采英文,但这个站让我郁闷的是采了些俄文的内容,为了SEO,又不好删。

2.我的drupal环境,BOOST模块装上了,其余的没什么特别

3.站点是放在3.95美元/月的bluehost上的,上面还有5个drupal站和本wordpress站,文章量大约是10万吧。所以我做的每一步都必须考虑到性能,否则说不定bluehost明天就会停止我的服务器了(已经被band过一次了所以才天天考虑性能优化,有钱就换!)。

性能方面:

1.在bluehost上用drupal得有觉悟,必须要静态化,SEO是要装pathauto的

2.非ASCII的URL是不能被boost静态化的(只在国外服务器是如此,国内服务器是支持的)

3.所以,目的很简单,URL中含有非ASCII字符的文章,不能被静态化,这时要将URL还原成原drupal URL, 即从http://oddsfun.com/content/非ASCII 还原为 http://oddsfun.com/node/xxxx

注意了,这不是多此一举,因为我的文章还是以英文为主的

这样还原后,就使得所有文章都会有静态化了,否则每次请求到这些文章,那服务器的消耗真是!

代码:

include/common.inc 1494行(drupal6 , drupal7估计也是差不多)

elseif (!empty($path) && !$options['alias']) {

/*hack

$path = drupal_get_path_alias($path, isset($options['language']) ? $options['language']->language : ”);

*/

$temppath = drupal_get_path_alias($path, isset($options['language']) ? $options['language']->language : ”);

if (!preg_match(‘@[^/a-z0-9_\-&=,\.:\s]@i’, $temppath)) {

$path = $temppath;

}

}

最终的结果可以看

Posted in drupal

Tags:

linux-xargs drupal & boost :性能加强,删除某文件夹下最旧的1440个文件

June 25th, 2011 by 黎 浩江 No comments »

今天狠狠地熟了一下linux,有个需求:删除某文件夹(cache)下最旧的1440个文件.

最终结果:

find /linuxwebdirectory/cache/normal  -type f | xargs ls -tr | head -1440 | xargs rm

xargs一个强大的linux命令。

我有1个站,目前的IMP大约是8000~10000/天的,大约20000个node吧,使用的是drupal和boost

由于站点刚建成不到2个月,很多代码在改,但又不能每次一改代码又将boost的cache文件全删除,这样做会导致我的低价服务器bluehost失去响应。

于是只能想一个办法,在一定的时间内,将boost的所有内容慢慢删除(不使用cron也是为了节约性能,文件一多的时候,使用cron删除boost的文件就是个痛苦)

目前我正在使用该命令,使得我的网站cache目录大约每20天完全换一次血,又能保证文件的更新性。

drupal分享:根据关键字过滤comment的模块

June 20th, 2011 by 黎 浩江 4 comments »

下载连接:http://trackself.com/code/trackselftools_comment.tar

直接解压安装,我没有写管理界面,要增加需要过滤的关键字,修改里面的“filters”数组即可.

drupal的确有很多的comment过滤模块,但我自己试用后,并没有wordpress的过滤好用,由于我的drupal的comment使用了cap验证,所以一般的comment都应该是人手post上去的了,但仍然有些广告在上面。于是就写了这个模块。

代理很简单:只是调用了hook_comment

function trackselftools_comment_comment(&$a1, $op) {

if ($op == ‘validate’) {

$filters=array(

//注意的是,单词一定要够长啊,例如如果想过滤abc,最好写成”空格abc空格”

“insurance”,

);

//print “<pre>”;print_r($a1);print “</pre>”;exit;

$subject=strtolower($a1["subject"]);

$comment=strtolower($a1["comment"]);

foreach($filters as $filter){

$filter=strtolower($filter);

if(count(explode($filter,$subject))>1 || count(explode($filter,$comment))>1){

form_set_error(“comment”,”comment should not include “.$filter);

}

 

}

 

}

 

//cache_clear_all_like(drupal_url(array(‘id’ => $nid)));

}

 

 

drupal7 :限制用户发一定数量的node:限制一用户只能引用一次特定的node

June 17th, 2011 by 黎 浩江 No comments »

好久没写drupal的文章了,最近接了个项目,项目的源码和项目的目的等出于保密当然是不能公布的,但程序的逻辑分享一下。

客户要求:限制1用户只能引用一次特定的node(当然,这里有CCK的node reference字段).例如:USER-A 建立node1引用了nodeB后,他以后再也不能创建node2去引用nodeB了。

注:以往我都用drupal 6的,这次是第一次写drupal 7的模块,不过发现,没太大变化,建议如果真想学好drupal的朋友,要学好“print_r”和“db_query”这两个个函数,具体可看我以前的drupal anywhere :http://www.trackself.com/archives/551.html

1.要首先找到控制node表单(form)验证(validate)的hook,于是google : hook node validate drupal 7 马上就找到hook_node_validate的页面

看看解析,果然适合:下面就和drupal6几科没差别了,$node的结构改了,于是要用print_r($node);查看一下结构

2.构建SQL:查找uid是当前用户的uid的并且已经关联过该nid的----根据需要构建即可。

3.debug的时候出错:发现drupal 7的db_query已经异于drupal6,但换汤不换药,查一下db_query的api说明文档就知道如何做了

于是就得到了下面的函数(为保护用户数据,一些字段我改成XXX了,函数不要复制,参考就好)

function XXX_node_validate($node, $form, &$form_state) {

if($node->type==”YYYY”){

/*

print “<pre>”;

print_r($node);

print “</pre>”;

*/

$uid=$node->uid;

$reffernid=$node->field_QQQQ['und'][0]['nid'];

//下面找出同时存在:field_QQQ_nid是$reffernid然后又是由uid是$uid的项

$sql=”

SELECT n.nid FROM {node} n

LEFT JOIN {field_revision_field_QQQ} f on f.entity_type=’node’ AND n.nid=f.entity_id

WHERE n.uid=”. $uid . ” AND field_QQQQ_nid=”.$reffernid;

$db=db_query($sql);

if($db->fetchObject()){

/*

print “<pre>”;

print_r($db);

print “</pre>”;

*/

form_set_error(‘field_QQQQ’, t(‘you could not post’));//error message

}

 

 

}

 

}

 

临床技能比赛全国奖==SCI第一作者,可笑今年的八年制选导师规定

May 26th, 2011 by 黎 浩江 4 comments »

可笑今年的八年制选导师规定。

今年有那么几个人拿到了“临床技能比赛全国奖”,结果新的八年制选导师规定上就增加了“全国奖”的能加20分(往年是没有的)。

这样的规定本来没什么好说的,但让人郁闷的的是,这样的奖几乎就是为了那么几个人设立的。

设立了也就算了吧,全国奖还得分分档次吧,不能啥全国奖都能加20分吧,估计这次他们要是拿二等奖,也能加20分了。

再说了,那个啥临床技能比赛,在假人上的比赛,能跟其他的全国奖有得比吗?哼。为几个人服务的规定罢了。

好吧,全国奖能拿20分,我也没什么意见,我也不是吃不到葡萄说葡萄酸的人。

但与另一个新规定对比起来就有意思了,必须SCI第一作者且本校发的才能加20分。

哼哼……临床技能比赛全国奖==SCI第一作者,靠,那我的一篇第二作者就0分没得加了,我的中文PAPER就0分没得加了?

切,不加就不加了,今年的规定,分高只不过给导师长长面子罢了,大不了你不给我加分我界时面试的时候再拿PAPER出来就是了,目的不过是为导师长长面子罢了。

可笑啊可笑啊。

那几个代表学生利益的所谓学生代表,哼哼,真是有才啊!居然给全部人来阴的,能有多少个人才能在本科发SCI第一作者的?

不过我也看清楚一点了,在中国,有权者才会有利,权利是也,即便是当个破学生代表,居然也搞这种小手段,看吧,多少年后,玩小手段的人中有多少个能成大器,太可笑太明显的小手段了。

看来以后在任何事业单位,还是得努力往上爬啊,多多少少得混个领导当当,再小的权利也是要争取的,要不然总会在某一天再被人摆一道,吃上暗亏。

唉,本来我没有一丁点做这种无聊事的兴趣了,现在不一样了,人无害虎心,虎有伤人意啊,这社会令人失望。

实力啊:上临床后,我得努力搞搞科研,不得罪人,往上爬,实力决定一切啊。

 

« 1 ... 7 8 9 10 11 12 13 14 15 16 17 ... 73 »