偷懒巧用PHP
来源:互联网 发布:万能淘宝店名怎么取 编辑:程序博客网 时间:2024/04/27 14:00
前一段时间,遇到这么个需求:用户想设定一个周期,比如3天或7天或15天,然后按照他设定的周期,某脚本去自动更新数据库里的某些数据。其他条件是,他有可能随时调整这个周期,但调整不会太频繁。
这个需求其实不难,解决办法也多多,比如你可以把他设定的周期写到一文本文件里,然后读写该文本,也可以存到数据库某个表里,然后读写数据库。
这两种方法都涉及到了一个问题:IO。不论是文件IO还是数据库IO,都是要有一定开销的。PV少时,无所谓,要是多了呢?
当然还有办法。
session,可以把它存到session中,会很快的。但有个前提,你不能重启apache服务器,不然就全完了。可谁能保证不重启服务器呢?
还可以用缓存。反正他不常改这个周期,我们就把它cache好了,如果cache过期或为空,再去文本或db中取,这也是个不错的办法。
可我很懒,我不爱装cache。我也很穷,我的机器没那么多内存。
于是我就想出来另外一个方法。
用户在提交设定的周期时,我将其写入另外一个文件,一个php文件,该文件其实就是定义了一个变量,且将其赋值为用户提交的周期,然后所有用到该周期的php文件,都让它们include这个php文件好了,这样,它们读取的就只是一个变量,那速度肯定是要快的了。
怎么样?听糊涂了没?听糊涂就对了。
我演示一下,其实你就明白了。
表单提交后的处理代码:
$days = isset($_REQUEST["days"])&&trim($_REQUEST["days"])?trim($_REQUEST["days"]):"1";//默认为1天
$fp = fopen("config.php", 'w');
$phpcode = "<?php/n";
$phpcode.= '$condition'."['days']={$days};/n";
$phpcode.= '?>';
fwrite($fp,$phpcode);
fclose($fp);
这样用户提交后,就自动生成了一个config.php,该php的内容是什么,不用我说了吧。
当你需要用到用户指的周期时,只需
include "config.php";
echo $condition['days'];
怎么样?是不是比读文本要快呢?
当然这种方式有极大的风险:如果用户更改的频率很高,那么你就得考虑文件加锁的问题,如果用户要存储的变量很多很长,你还要考虑文件写到一半时,浏览器端来了request怎么办。个人想想,可以先往个临时文件中写,写完了mv过来。还有就是用户提交的包括php的保留字符如双引号单引号之类的,记得一定要转义。
一句话,特殊情况特殊对待,这种特殊的需求加上我特殊的懒惰,才有了这种特殊的方法,较真的,请绕行。呵呵。
- 偷懒巧用PHP
- 如何偷懒地用 PHP 搭建一个班级网站
- 学会巧用style文件偷懒
- 偷懒......
- ##偷懒
- 偷懒
- 偷懒
- 偷懒万岁-让PHP自己初始化类
- 偷懒万岁-让PHP自己初始化类
- 想偷懒?用stl吧!!!
- 偷懒了
- ajax偷懒
- 偷懒了
- 拒绝偷懒!!!
- 能偷懒就偷懒:SQLCMD
- 常常偷懒这么写<??> 其实应该写成 <?php ?> 简写时short_open_tag 必须开启
- 代替测试用例的检查表-但不要作为偷懒的借口
- 代替测试用例的检查表-但不要作为偷懒的借口
- printf()和sprintf()小比较
- INSTALL_FAILED_INSUFFICIENT_STORAGE 错误
- 从open系统调用的源码看文件的打开过程
- hosts文件设置后无法生效的解决方法
- android 用VideoView播放本地视频文件
- 偷懒巧用PHP
- Visual Studio 2008 创建dll 动 态链接库
- 1.《欢聚一堂》演出结束后主持人上
- 有符号类型的最小负数的补码的由来
- datagridview to textbox
- 【免费】TUP 第五期移动开发技术沙龙火热报名中~~
- 【免费】TUP 第五期移动开发技术沙龙火热报名中~~
- 標點符號-英語
- 【免费】TUP 第五期移动开发技术沙龙火热报名中~~