Loading...

多级目录的处理思路

Filed under: PHP,网站技术 — 江东 @ 2012-09-04 11:50:17 才(9)条评论

现在很多系统,如文件管理,内容管理都存在多级目录的问题,而多数主流的程序(甚至包括知名的网店程序)居然都是采用数据库逐级查询来将目录按照分级形式显示出来,这种思路非常不科学,而且还消耗资源。

当然,本人以前也是这么做的,为了减少资源的开销,我一般都是添加了文件缓存。除非目录有变动,缓存不会做更改,这种方法大大降低了每次载入目录的资源占用,当然,也会很明显的减少网页的载入时间。

不过,我这里要介绍一个新的思路,对我自己来说,是原创,不过肯定有人已经用了这种方法。 (read on …)

php如何判断IP为有效IP地址

Filed under: PHP,网站技术 — 江东 @ 2012-04-18 21:03:20 才(6)条评论

多数人看到这篇日志,第一印象肯定是以为是要讲如何通过正则表达式来判断。

非也,在php5.2.0之后,有专门的函数来做这个判断了。

判断是否是合法IP
if(filter_var($ip, FILTER_VALIDATE_IP)) {
// it’s valid
}
else {
// it’s not valid
}

判断是否是合法的IPv4 IP地址
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
// it’s valid
}
else {
// it’s not valid
}

判断是否是合法的公共IPv4地址,192.168.1.1这类的私有IP地址将会排除在外
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE)) {
// it’s valid
}
else {
// it’s not valid
}

判断是否是合法的IPv6地址
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)) {
// it’s valid
}
else {
// it’s not valid
}

判断是否是public IPv4 IP或者是合法的Public IPv6 IP地址
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
// it’s valid
}
else {
// it’s not valid
}

本文来源:http://www.electrictoolbox.com/php-validate-ip-address-filter-var/

ajax-comment-vote更新

Filed under: PHP,Wordpress,网站技术 — 江东 @ 2011-11-24 19:36:27 才(8)条评论

发现很多朋友最近留言,表示该评论投票插件有问题,具体问题就是未登录状态,评论投票卡死不成功,由于本人也多年不折腾wordpress了,所以一直就耽误在那里

今天还是干脆将这个评论投票的插件也给修正了吧

修正了未登录状态无法对评论进行投票的bug

下载地址:ajax-comment-vote

一个简单自动监控nginx 504错误的php脚本

Filed under: PHP,网站技术 — 江东 @ 2011-11-22 11:39:59 才(12)条评论

因为php连接网络超时,很容易导致nginx 504错误,网络上有很多解决办法,但是不知道为啥在我这里都不奏效。

所以我只好写一个脚本,定期检测我的站点是否504了,若有504,只好出绝招“重启nginx和php-fpm”,

具体代码如下:
#!/usr/bin/php 是你的php路径 (read on …)

wordpress单点登录限制插件

Filed under: PHP,Wordpress,网站技术 — 江东 @ 2011-03-02 12:28:58 才(5)条评论

受朋友之托,开发了一个wordpress登录限制的插件,

插件功能很简单单一:只允许用户单点登录,不能在多个地方,甚至是同一台电脑的不同浏览器上登录,后登录者自动将早些时候登录用户踢出!

插件下载地址:multi-login-checker

兼容性:支持3.0-3.1 的wordpress

变态的智能DNS实现方法

Filed under: PHP,网站技术,虚拟主机 — 江东 @ 2011-02-19 21:28:56 才(17)条评论

在没事的时候,我总会想一些变态的方案来解决我的需求,刚才楼下散步的时候,又想了一个变态的智能DNS方案。

首先说需求背景:在将来的某一天,我会推出一个另外一个廉价但是靠谱的互联网服务,这个服务有个特点,就是需要大约10个或者更多位于全球的服务器来分发内容,服务器多了,就难免有某个服务器宕掉而无法检测到。

需求出来了:要求一旦有服务器宕,该服务器对应域名的IP就自动解析到其他任何一个可用的服务器的IP上,这样就保证分发服务器能达到100%的可用率。

可能这个时候有朋友就会跳出来说,用那种可以检测宕机的智能DNS啊,是的,解决方案就这么简单。不过既然我这篇日志提到的是变态的解决方案,肯定讲的不是常规的智能宕机检测DNS。

我的实现方式是这样的,假设需要检测的服务器有10台,那么我就在这10台服务器上分别配置服务器检测脚本,这个脚本的功能如下:

  1. 每几分钟检测其他几台服务器的web server的状态,10台一起行动,每台服务器被检测的时间间隔就很短,可能一分钟就能被检测一次;
  2. 一旦发现某台服务器宕机,利用enom的DNS API,自动将宕机服务器的域名如:server001.homezz.com 随机解析到其他未宕机的服务器;
  3. 于是乎,山寨的智能DNS就实现鸟;

脚本可以用shell,也可以用perl,甚至还能用php,实现起来相当简单。

欢迎专家在下面拍砖!

其实,熟悉我的人都知道,我很多解决方案都是自己想出来的,好的是,有些方法居然和大家通用的方案竟然一致,懒人就这样,不愿意接受传统东西,没办法!

如何保持持久

Filed under: PHP,互联网事,网站技术 — 江东 @ 2010-03-31 16:06:50 才(9)条评论

此文提到的“持久”是指web 的session会话持久。

有的时候,为了方便,我们需要在用户一直保持登录状态,即使用户没有做任何动作也不要因为超时而将让将用户的登录状态终止,除非用户主动关闭浏览器。

当然,实现这个方法有最简单的方式,那就是改变服务器的配置,将会话超时的时间设置更久,但是有些时候,我们只是做一个小的应用,或许我们的程序仅仅是放置在共享的虚拟主机上,这个时候我们可能无法更改服务器的设置,那么就将这个任务交给web程序去做吧。

其实实现的方法很简单,那就是用js定时去获取服务器端数据,赶在超时前去告诉服务器:“我还在做动作呢”。

实现方式很简单

首先,在服务器端建一个文件,随便取名,比如keepalive.php. 可以有内容,比如<?php echo “当前时间是:”.date(‘Y-m-d H:i:s’);?>,也可以干脆为空。

然后在在公共的文件(比如 inc.footer.php)中写一段js,代码如下:

function keepAlive(){
var url=”keepalive.php”;
$.get(url,function(d){});
setTimeout ( “loadAdminStatus()”, 120000 );
}
keepAlive();

当然,前提是你要引入 jquery 库。

如此这般之后,一旦打开网页,系统将会每120秒去通知一次服务器,只要服务器的超时时间在120秒外(若少于120秒,请修改120000为合适的值 单位是毫秒),登录状态便会永不超时。

解决最近刚刚出现的图片红叉问题

Filed under: PHP,网站技术 — 江东 @ 2009-07-16 23:13:49 才(45)条评论

由于本人的相册都很和谐,所以还是得想办法让用户能看见。

原理很简单,首先在国外的主机上加上一段代码,让国外的主机根据GET传递过去的url参数相片读取下来,缓存在自己服务器上,由于某个东西异常厉害,所以传递参数的时候还得要将某些单词给替代,才能传递,否则国外的主机连带撞死;

然后打开模板中的footer文件,添加一段js代码,此js代码的作用就是遍历该页所有图片,然后将其替代成http://xxx.com/readimg.php?这里是图片的地址,这样图片就可以正常显示了。js代码如下

$(“img “).each(function(i){//遍历本页所有的图片
var src = $(this).attr(“src”);
if( src.indexOf(‘ggpht’)!=-1 ){//如果图片来自某个地方,则替代之
$(this).attr(“src”,”http://0bad.com/readimg.php?src=”+src.replace(“ggpht”,”gouride”) );//则将图片地址改成转发的地址,记住ggpht替代掉,因为这个会触发墙
}
});

上面的全角字母请自行改成半角字母(请保证你主题引入了jquery )

至于那个php文件,请到这里下载:pika 然后放置到你国外的空间。ache和cache下的所有文件夹属性请设置成0777

另外,请大家低调发表评论,不要带上关键字,被和谐怕了

另,效果请参见右上角的homezz图片。

php插件方式将会在明天发布,届时feed中的图片也会正常显示!

此举仅仅是为了正常的blog能正常的显示图片,本人不敢造次!

不太熟悉如何使用的朋友,请等待我的插件发布!