php如何判断用户通过手机wap访问还是电脑直接访问
星期三, 四月 22nd, 2009最近做一个手机查询系统,自然就牵扯到了此问题,那我就根据对wap的认识浅谈下通过php判断用户访问方式是通过wap访问还是电脑直接访问。
首先说最根本的解决方法:
手机访问时,会附带发送user-agent信息,这个信息里面会有手机号码信息,那么如果能取得手机号码,则可以肯定是通过手机wap访问的。但是目前中国移动已经屏蔽了user-agent信息,所以获取不到手机号码。有关系的朋友可以联系移动公司,把wap网站服务器的ip提交给中国移动,加入白名单后即可取得ua信息。目前中国联通可以直接取到手机号,对联通用户此方案可完美实施。
接下来说我的解决方案:
手机访问,原理是手机通过移动公司的代理服务器进行的访问。那么我们就可以理解是一台普通电脑使用了代理服务器。当手机通过代理服务器访问的时候,http头信息会毫无疑问的包含一个信息:via。这个信息提供了有价值的判断信息。
例如河南移动取得的via信息是:
河南联通的via信息是:
其他各省的http头信息和这个大同小异,判断是否手机访问的方案就出来了:获取http的via信息字符串看是否包含wap字符,如果有则是通过手机访问。这样做的结果是没有人能伪造手机访问,判断绝对准确。自然,这样对于网上流行的手机wap模拟器也做了屏蔽—-从根本上屏蔽。
操作代码也很简单:
function check_wap() {
return stristr($_SERVER['HTTP_VIA'],"wap") ? true : false;
}
// check over
从我查阅的资料来看,目前此方法应该是迄今互联网上准确率最高、最简单的判断手机访问方法。
linux下如何进行释放内存
星期天, 二月 24th, 2008这一阵子对linux学习不少,因为遇到了不少的问题—-都是一个相对相互的过程。所以我在哪里好像写过一句话:我们无非是遇到些问题,然后解决它罢了。
通过对discuz的二次开发,渐渐领悟了不少mvc的思想,虽然有质的飞跃,但我肯定这只是开始,还有很多东西需要学习和探讨才能明白。打算开始漫长的zf之旅。谁再说php没有开发模式,那只是大部分php programer对开发模式的了解甚少罢了,毕竟平凡的占多数。
谈谈主题:linux下如何释放内存?
这一段调试php程序总是见服务器内存占用98%左右,很少下降,心里就范迷惑,莫非内存太小不够用么,服务器可是4G内存啊,两个4核cpu怎么可能出现这么高的内存占用?后来查了一下,发现linux与win的内存方法使用相差很大。windows下内存是使用多少就拿来多少内存用;linux是先把内存尽可能占用,然后再重新分配给各个应用,分配完后剩下的内存用来存放各种缓存,例如grep这样的查询(我正迷惑前几天的大目录grep速度超快)就可以利用内存缓存大大提高系统文件交换速度。这样以来就豁然开朗了。完全不用担心内存被占用完。
如果你很无聊的想释放内存,可以使用这个命令:
echo 1 > /proc/sys/vm/drop_caches
对比下释放前后内存占用情况,很爽哦~。释放前最好使用下sync命令以防数据丢失。