在我们的一个php服务器+db服务器的传统架构中,随着在线人数的不断增加,我们发现db服务器显得越来越不稳定,本来这完全是预料之中的一件事情,因为平时我们可能认为非常平常的一个数据库I/O操作,在高并发时都有可能导致db server宕机,在我们确认程序流程都合理的情况下,升级了CPU、内存和硬盘速率,但情况依旧,一到一定程度(这个程度显然比我们的预警值低很多,我们认为我们的硬件支撑这么多的在线是完全OK的),马上有丢包现象,而监测也表明DB服务器剩余资源很充裕!!!这是太奇怪的问题了,再次把所有的可能的瓶颈都检查了一遍以后,得出结论,这种现象是不可能的!天,难道有外星人在控制么?

全文阅读 »

现代人的需求日益增长的速度是惊人的,在我们要求吃饱之后的吃好,而现在大家时髦的话题已经是减肥了。我们的系统中嵌入的模块也越来越多,机制越来越灵活,然而还是一直都不够用。我们来看看在各个成熟系统中早已司空见惯了的广告系统,也可以称呼为广告模块。
对于一个广告系统,我们的需求大概是这样的:
1、可以插入任何页面的任何位置。
2、可以插入图片、文字、代码、flash,并可以设定一些参数
3、一个广告位可以随机播放不同的广告
4、可以统计点击,甚至跟踪访客浏览路径
5、操作不要太繁琐

以上这些功能,几乎所有成熟的CMS、BBS系统都做到了,之所以还画蛇添足的把它写出来,实在是窃以为很多东西需要沉淀,总结才有进步的。找一个例子还看看上面的这些需求它是怎么做到的,比如ECSHOP,有一天我打开它的代码一看,在头部注释赫然写着“这不是一个自由软件”,让颇为认真仔细的读完了整句话,发现没事,因为起先我以为看它的代码是非法的。。。分析了一下它的广告模块,是非常符合上面提出的几点要求的,就操作上可能还是很显繁琐,首先要知道你想插入的位置位于哪个块(这个是“设置模板”功能),宽高多少,然后新建广告位,指定宽高,……它的广告还可以站外投放的,并且能够统计点击,这点做的非常好,其实在其模板中也是预留了位置(通过特定的标签)来添加广告的,这当然无可厚非,比很多系统的后台直接编辑模板源代码的操作要来的方便的多。广告也有自己的模板,这增加了灵活度,把系统模板拆成很多的小模块是非常值得学习借鉴的方法。呜呼!好像能总结的也就这么多呀,好了,文字不一定要多,能有点滴有用就行。如果是写作文,我估计我的老师会让我重写,但今天不一样,这是在写一些自由的东西,不做限制,长短两相宜。

面向对象的程序设计语言C++

10/12/2008   |  分类:PHP

本无意写C++这玩意儿,这厮,人们对它的好评还少吗?当然就oop来说,大伙儿更为追捧java,嗯,姑且不说谁是老大了,因为俺对他们的认识和研究都颇为肤浅,不敢妄言的。
尽管偶也是学过java的人,但是对oop的理解以及思维方式似乎都还没有跟上,大有些一知半解的意思;这不,就决定学习下C++了(为啥不选java,因为java伤身体)。在很久很久以前,偶曾学习过C,并因此而学习了C描述版的《数据结构》(时间长达两个学期),所以,这种面向过程的模块化编程思想有些根深蒂固,后来接触php以后,更是一下子将这种思想发挥了出来(我当然不是说PHP是面向过程的语言,不过在当前,除了有限的几个底层操作类,其他的偶还是以自定义function为主哈),为我带来的直接影响是——靠双手填饱了自己的肚子之后便不思进取了。整个社会都在叫喊着oop,也有几位友人几次三番、几次三番的劝——”先生还是学一点吧!”
好的!我也是好说话的人,那就OOP吧,洗脑当选C++,因为它水果味,含钙高,一门顶过去五门……(咳咳,离题了~)开发环境就选C++Builder 我还整了个2009版,呵呵。

不要太过崇拜我的效率,我已经买书开始看了,书是一本叫做《面向对象程序设计语言C++》的,教材之类的很基础的东西,高深的俺也看不懂啊,本想买本原版书装逼一下的,无奈价格过于昂贵,跟这本比起来,得再搭4箱啤酒进去,经过周密的思考和细致的权衡,总结下来就是——”酒不能不喝!”,于是花重金买下这本国产书,毕竟支持民族文化事业也是大事嘛!
现在的计划是:从出版说明看到前言再到目录,再看序,嗯,就这么干 ……
(嗨!博客的风格终于不再搞了,最近有空的时候都在研究飞信、QQ的通信协议,以图他日做些机器人之类跟上时代的东西,顺便表扬一下,luma是个好同志。这文章越写越像咕叽咕叽了,靠!不写了)

博大精深的农历算法PHP代码

04/10/2008   |  分类:PHP

今天在phpchina上看到有人在寻php中的农历算法,记得偶以前在拜读bo-blog源码的时候,就隐约的注意到这个,而且还是相当经典的一个算法,于是就又把他挖出来,和大伙儿分享下,呜呼,似乎和3楼算法一样的,没有仔细看,现在还要加班呢!回头再看了~ 全文阅读 »

Zend Studio 5.5.1在线注册机PHP版

04/04/2008   |  分类:PHP

嗯!用PHP也可以做很复杂的数学运算的,就是偶尔需要曲径通幽一下,用PHP写了这个Zend Studio 5.5.1的在线版注册机,算法较为繁琐,这回我体验了下PHP操作大整数的方法,还有位操作(按位异或,取反等)。根据TEAM DVT的EXE版注册机算法,用PHP进行了重写。简单测试了一下,能正确产生授权密钥。

整了好久,累死了,快!

放上测试地址:

http://x.zendstudio.net/zendstudio5_5_1-keymaker-php/
欢迎大家测试!

   我在使用XP系统,相信很多朋友和我一样,有一天,当我准备打开zendstudio 5.5.1——以下简称ZDE(ZendStudio 5.5.1下载)开始工作的时候,几乎是灾难性的故障发生了!ZDE在三次弹出下面的错误消息框后出现启动画面,之后不再有任何反应,不能进入主界面!
全文阅读 »

闲的蛋疼的时候,顺便加强下自己对PHP中数组操纵的一些技巧,就写了下面的一段小代码,可以随机生成卡号密码对应的数组,并且自动去重复,思路没有,纯粹瞎掰。
[codes=php]
<?php
$numLen=16;
$pwdLen=10;
$c=100;//生成100组卡号密码
$sNumArr=range(0,9);
$sPwdArr=array_merge($sNumArr,range('A','Z'));

$cards=array();
for($x=0;$x< $c;$x++){
  $tempNumStr=array();
  for($i=0;$i< $numLen;$i++){
    $tempNumStr[]=array_rand($sNumArr);
  }
  $tempPwdStr=array();
  for($i=0;$i< $pwdLen;$i++){
    $tempPwdStr[]=$sPwdArr[array_rand($sPwdArr)];    
  }
  $cards[$x]['no']=implode('',$tempNumStr);
  $cards[$x]['pwd']=implode('',$tempPwdStr);
}
array_unique($cards);
print_r($cards);
?>
[/codes]
混乱的说,算是给自己对数组的总结了。最近其实挺忙的,看看这篇日志的时间你大概就知道,我并没有闲的蛋疼~

     php是外国人开发的,所以经常有很多东西不太好用,时间日期就是其中之一,经常直接显示时间日期(例如:date("Y-m-d H:i:s"))默认为UTC时间,表现是和北京时间差8个小时,因此我们需要将其+8个小时,原理是我们正好位于时区的东8区,但是这个问题是受到php.ini配置的date.timezone影响,当我们将其设置为Asia/Shang或Asia/Chongqing或者其他的东8区,显示出来的将是北京时间,或者在输出时间之前使用date_default_timezone_set()设置时区,也能正确的显示北京时间,问题是这样做都是相当的不灵活。

update:经测试,使用gmdate("U")是不正确的获取方式,与time()无别,只有使用time()-date('Z')才能做到获得UTC时间戳!特此更正,向各位致歉!谢谢支持。  –2008-3-12 21:04:25
全文阅读 »

    难得,真的很难得,今天得偷闲了一天,无聊着呢,就想让偶的个性签名显示在博客上,于是整,找到一个曲径通幽的方法,就是找滔滔(差点打成套套),我用PHP写的一段代码,就一个字符串出来,无甚技术含量,倒是之前找调用点——api费了半天脑筋,OK,看代码。 全文阅读 »

今天和小鸡的讨论中提到的这个问题,最初一直在想SQL语句应该怎么写?现在的时间存入数据库一般都采用UNIX时间戳的形式,还原起来也方便。因此,自然而然的想到构建每个月初和月末的时间段,然后每个月查数据库统计一次,如果要统计一年中每个月的日志篇数,就要查询12次数据库,效率相当的低!后来就偷看了BO-BLOG的代码,发现它只查询一次数据库就可以统计每个月的日志篇数,绝对的值得学习,效率也是非常的好!(后面也截取了F2BLOG的按月归档的算法,和BO的如出一辙。)
下面赏析下代码: 全文阅读 »

Pages: 1 2 3 Next