Pages (41) « Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Next »

关于PHP截字的那些事儿

这是一个初级问题,新手会关注,同样是一个高级问题,老手也常栽跟头。

我负责公司在线产品的底层开发,对这种基础函数也采用拿来主义。

本以为Discuz的cutstr函数应该很完美,但也难逃公司测试人员的法眼。仔细一看,原来也有BUG。

首先,我们分析一下该函数需要实现的功能。对于我们的用户(这里指开发人员),他们需要得到的结果的让一列文字整齐的截断。

他们并不关注文字的个数,也不关注是何编码,只关注字符位置长度。在PHP中汉字和编码有关,gbk是双字节,utf8三字节。


bcastr4修改

bcastr3、bcastr4都是非常优秀的Flash轮播插件,在大大小小的项目中常用到,但bcastr4的标题位置被固定到了顶部,我所经历的项目所有客户都要求调到下面,这是一件难受的事情。

我喜欢做一劳永逸的事,将bcastr4做了一下小修改,主要是标题位置、字体、按钮位置等。

点击下载bcastr4修改版

php无限级分类-php无限级数据排序(原创)

我们经常遇到这样的问题,读取无限级分类数据,通常运用在地区、类别、商品类目等。

通常数据库设计如下:

id name   pid

1  北京   0

2  重庆   0

3  北部新区 2

4  江北区  2

pid记录了上级ID(父ID)

初级方法:

最简单的思路或者说常规的思路就是递归算法了。递归算法是比较快的和准确的,但是有一个问题就是会比较浪费不必要的资源,递归算法执行的过程中会开启N个函数入口,也就是函数需要一直保存状态等待起递归的运算结果。例如这个树形有5层*60行,则在递归算法中浪费的运算至少60次,并且保持5个函数一直是运算中状态,不合理的是同样要做60+次的数据库查询,因为不管其有没有子类,算法执行过程中都需要去重复执行递归运算,事实上实际执行过程中不止这个数。

可以写个简单的例子来测试递归算法调用函数的次数。

/* 先假设我的数据是这样子的

array(

   array(id=>1,pid=>0),

   array(id=>2,pid=>0),

   array(id=>3,pid=>2),

   array(id=>4,pid=>0),

   array(id=>5,pid=>3), 

   array(id=>6,pid=>1),

   array(id=>7,pid=>1),

   array(id=>8,pid=>6),

   array(id=>9,pid=>7),

   array(id=>10,pid=>9)

); */

$db = new MysqlDb();

$num = 0;

function treeArray($pid) {

 global $db, $num;

 $num++;

 $data = $db -> getAll("SELECT * FROM geo WHERE pid = ".$pid); //返回一个二维数组

 $result = array();

 foreach($data as $val) {

  $val['child'] = treeArray($val['id']);

  $result[] = $val;

 }

 return $result;

}

print_r(treeArray(0)); //树形的结果

var_dump($num);

    

中级方法:

然后我们系统越作越大了,数据库资源紧张了,我们要求在不改变数据库结构的同时尽可能的减少数据库的操作。那么这样做就需要我们有一算法来给你的数据排序了。


域名风波

国庆期间域名被停止解析,导致网站10天无法访问,一访问新网才知道是因为没有提交身份证明,也就是说没有实名验证,其实对于我这个域名来说,早就实现了实名制,那是真正的实名制。

寄人篱下,不得不低头啊,马上扫描、上传身份证,我知道这帮客服的办事效率很差,也就不期待当天开通了,第二天便进入了国庆长假。

三天过去了,按照xinnet的提示查询,还是没有被认证啊,很无赖,xinnet只有上传身份证的功能,没有流程交互,相当不友好。只好拨通他们的服务热线,确实热,几天来一次也没有打入,估计是国庆放假了,也没人值班,这还是互联网公司吗?

7天长假后,我直接拨通了cnnic(中国互联网络信息中心)才知道,域名没有审核通过。原因是2004年注册的时候,被不负责的代理商把注册企业写成了“某某网络公司”,需要提交公司执照,晕了,我都没有听说过这公司,估计也早关张了。耐心的cnnic客服,让我先修改注册企业,不对吧,这个应该是过户,要钱钱的。客服却说xinnet可以修改,这是他们提供给xinnet的功能,收不收钱他们也不知道。

只好拨通了xinnet的客服电话,终于通了,客服说已经给代理商已经开通了这项功能,由于这次实名认证可以免费过户一次。呀!还有这等好事!

07年我已经把域名转到了自己的代理账户下,马上登陆,才发现自己的域名其实29号已经到期了,马上续费,过户,很成功。7年来域名终于真正属于自己了,很踏实!

特此纪念:

故事很曲折,也很费神,但总算是因祸得福。xinnet应该免费开通过户服务,想想改一条记录就要500,没有天理。

Linux下网站压力测试工具webbench下载安装使用

  webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便。对于程序员等非专业测试人员来说,比较实在。

1、适用系统:Linux

2、编译安装:

引用

wget http://www.linuxidc.com/system/systembak/webbench/webbench-1.5.tar.gz

tar zxvf webbench-1.5.tar.gz

cd webbench-1.5

make && make install

3、使用:

引用

webbench -c 500 -t 30 http://www.luocheng.cn/

参数说明:-c表示并发数,-t表示时间(秒)

4、测试结果示例:

引用

Webbench - Simple Web Benchmark 1.5

Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://www.luocheng.cn/

500 clients, running 30 sec.

Speed=13921 pages/min, 11614212 bytes/sec.

Requests: 10815 susceed, 0 failed.

Pages (41) « Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Next »