
PHP
hipop
这个作者很懒,什么都没留下…
展开
-
请不要滥用异常
ExceptionPHP的异常机制的功能非常强大,并且是可以跨作用域的传递丰富的信息,但它强大的功能很容易让我们滥用它。比如在用户检查登录时,如果密码不正确,你可能会在模型中抛出一个异常,在控制器处理它。对于程序员,这样做会很舒服,因为你不再费心思考虑心如何构建返回值和制定返回规范,也不必关心密码错误之后的代码。可是,异常不是免费的,并且它价值不菲。PHP在使用异常时会初始化许多机原创 2013-07-24 17:13:34 · 1949 阅读 · 0 评论 -
浮光掠影——php的safe_mode
从 http://hipop.aliapp.com 迁移好吧,本博客的开篇作,就从wp的安装说起吧。本博客安装完成之后,有一个大问题:无法上传文件报如下错误:Warning: copy() [function.copy]: SAFE MODE Restriction in effect. The script whose uid is 697074 is not原创 2013-11-18 17:02:48 · 1509 阅读 · 0 评论 -
Call-time pass-by-reference has been removed
今天遇到一个Fatal error: Call-time pass-by-reference has been removed。在php5.5.12中发现,原创 2014-05-21 16:59:57 · 726 阅读 · 0 评论 -
单引号真的比双引号更具效率吗?
从http://hipop.aliapp.com迁移测试环境:centOS5.4测试工具:webbench测试代码:echo ”hello world“; / echo ‘hello world’;测试命令:webbench -c 5000 -t 30测试结果:双引号:Speed=8394 pages/min, 282969 bytes/原创 2013-11-18 17:05:22 · 1834 阅读 · 0 评论 -
zendframework太慢了!
从http://hipop.aliapp.com迁移没错,zendframework确实比我想象中的还要慢。我们的服务器,静态文件的并发可以到10k,原生PHP可以达到3-5k,而zf却只能到0.4-0.8k,加上数据库也就只能是效率上理论损失80%以上。我不得不把目光投向yaf。而且,我希望能写个中间件,实现yaf到zendframework的平滑过渡原创 2013-11-18 17:06:22 · 2115 阅读 · 0 评论 -
小白问题,PHP获取今年的第一周或第一个星期一
print_r(date('Y-m-d', strtotime(date('Y').'W01')));echo "\r\n";print_r(date('Y-m-d', strtotime('first mon of january')));这个小问题又让我复习了php日期han原创 2014-06-09 19:20:14 · 1483 阅读 · 0 评论 -
关于yaf的控制器命名,一个纠结的问题。
在zf中控制器是可以继承其他控制器的,无论是继承本模块的还是继承其他模块的控制器,但在yaf中,这仿佛变得很难....举个栗子:/ application/ controllers/ Base.php Index.php modules/ Module1/ controllers/ Base.php Index.php如果m原创 2013-06-24 08:06:05 · 5296 阅读 · 0 评论 -
jquery 源码分析,为什么不用typeof 而用 tostring
typeof不能判断出数组和null,而且对于通过new操作符生成的对象,也无法判断类型。 至于instanceof,因为在JavaScript中,所有对象都是object,也就是说new Number(2)或new String('hello')也是object,故无法判断。 但Object.prototype.toString对任何变量会永远返回这样一个字符串"[object cl原创 2013-03-09 01:41:52 · 1051 阅读 · 0 评论 -
PHP的效率比起JAVA简直弱爆了!
PHP的运行速度如何?我这里有一个跟JAVA比较的测试图表:表格数据:BenchmarkTimeMemoryCode mandelbrot1/5717×2× binary-trees1/431/2± fannkuch-redux原创 2013-06-07 14:11:30 · 9789 阅读 · 16 评论 -
编译PHP遇到的错误处理,缺少的库及补全办法。
configure: error: xml2-config not found. Please check your libxml2 installation.yum install libxml2-develconfigure: error: Cannot find OpenSSL’syum install openssl-develconfigure: error: P转载 2013-06-17 15:17:00 · 1507 阅读 · 0 评论 -
导出文件在IE和火狐中文件名乱码问题的解决
$ua = $_SERVER["HTTP_USER_AGENT"]; $filename = "客户数据.xls"; $encoded_filename = urlencode($filename); $encoded_filename = str_replace("+", "%20", $encoded_filename); if (preg_match("/MSIE/", $u原创 2013-08-07 13:12:32 · 3004 阅读 · 0 评论 -
PHP的预定义常量
今天看鸟哥的yaf的一个demo,在入口文件中,作者有这么一个定义:define("DS", '/');define("APP_PATH", dirname(__FILE__).DS.'..'.DS.'application'.DS);作者的意思是吧"DS"定义为路径分隔符,我突然记得PHP有一个常量定义了路径分隔符,并且那个常量是自适应平台的。作者完全可以不用这么定义,因为如果较真儿的原创 2013-06-14 21:35:19 · 1735 阅读 · 0 评论 -
zend framework 1.11 中缺省数据配置是如何读取和存储的
最近在用zf,眼下用到了zf的事务处理,事务处理封在zf的Adapter抽象类里面,使用事务,必先获得Adapter实例。Adapter是Zend_Db的灵魂所在,网上有诸多介绍她的使用的文章与示例,但诸多是以官方文档的模式给出:require_once 'Zend/Db.php';$params = array ('host' => '127.0.0.1',原创 2011-11-22 14:28:22 · 905 阅读 · 0 评论 -
php5的UML建模
今天在坛子里找到一哥们儿给的php5的建模工具。试验了一番,果然不错。下面把安装过程分享一下。这个工具叫DIA 主页是http://live.gnome.org/Dia 其实是一个多功能的画图工具,给这个工具安装一个UML2php5的插件就能搞uml了。1、首先打开这个东西下载dia: http://live.gnome.org/Dia 2、下载第一个东西,也就是dia3、浏览到页面最后,下载uml2php5-2.2.0.zip4、下载完毕后打开dia的压缩包,并安装5、安装完毕后将uml2php5-2.原创 2010-12-11 14:27:00 · 711 阅读 · 0 评论 -
某浪PHP面试题及答案优化
一网友去某浪面试PHP,在他谈心得的时候说了一道关于算法的面试题,下面写问题答案及优化方案,希望大家多提提意见。“神马,杨辉三角?” 我估计太久不上学了,当年初中数学及大学C语言课上的杨辉三角完全忘了是什么东西了。而题目恰恰就是:问:“用PHP输出杨辉三角”经过一阵冥思苦想... ... 什么杰宝的杨辉三角小裤裤啊!!!!问度娘去!!!度娘告我:“杨辉三角有曲折的历史和原创 2013-07-06 17:07:32 · 1932 阅读 · 1 评论 -
关于yaf自动加载的一个疑惑
最近在考虑使用yaf代替已有的mvc框架以提高性能,在使用过程中,遇到了一个小小问题:yaf不能自动载入以Controller, Action, Plugin, Model结尾(或开头,yaf.name_suffix=0时)的其他类。因为yaf的自动载入机制把以这些单词结尾的类认为是控制器、Action、插件和模型,而去APP目录下寻找。这个规则在yaf_loader.c 的autol原创 2013-06-21 20:43:06 · 4766 阅读 · 0 评论 -
关于yaf的控制器命名,一个纠结的问题(续)
前面写过一篇《关于yaf的控制器命名,一个纠结的问题》。没想到yaf群里面也有跟我遇到一样问题的人,分享下解决办法。写完那篇博文后,我尝试了多种思路,又是SPL又是配置的,历经了不少坎坷,但还是顺利的达成了我想要的目标。还是那句老话,办法总比困难多。下面,我介绍一下我的这个方案,不过这个方案的基本原理是修改yaf的源码,并重新编译,并且是针对不使用命名空间的环境,不喜欢这个方案的同学可原创 2013-07-16 14:09:50 · 3257 阅读 · 0 评论 -
yaf模板路径在模块中的问题及解决方法
yaf模板在模块中加载模板时,默认的视图会去默认模块下面寻找模板文件,这个....╮(╯▽╰)╭想要让yaf自动去模块下面寻找模板文件,需要如下代码 public function preDispatch ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response ) { $moduleName原创 2013-06-22 17:46:00 · 5381 阅读 · 0 评论 -
算法:将table标识的树形结构文本数据快速导入Mysql邻接表
目前,虽然mysql的邻接表是个悲剧,但........你懂的问题:请根据题干描述你的算法,有以下树形结构的文本数据:部门A 职员1 职员2 部门B 职员3 职员4部门C 职员5 职员6它们用最常用的table符号标识其数据结构,请使用PHP计算出每条数据的路径、是否是叶子节点并导入一张邻接表。答案://使用换行符号分割数组$arr原创 2013-07-08 15:53:14 · 1819 阅读 · 0 评论 -
刨根问底儿 -- intVal($str) 跟 (int) $str 的运算结果有什么区别
intVal($str) 跟 (int) $str 都是把其他类型的变量转化为int型变量的方式,这么多年来我一直森森滴怀疑它们的运算结果在某些条件下会有区别。对于我的疑问,文档里也没有多说(或者我没找到),还是做个实验验证一下吧。除了intVal函数的第二个参数可以指定$str字符串的进制形式外,对于普通的10进制数字型字符,这两种方式有什么样的区别呢?小实验:$arr = arra原创 2013-07-10 20:10:11 · 1837 阅读 · 1 评论 -
PHP里的“夏令虫”
警惕时间里的夏令虫,这是一个超级的大BUG。原创 2013-08-09 15:30:33 · 1525 阅读 · 0 评论 -
PHP奇趣笔试试题一则
PHP奇趣笔试试题一则$a = 3;$b = 5;if($a = 5 || $b = 7){ $a++; $b++;}echo $a, ' ', $b;输出结果为:A、6 8B、6 6C、2 6D、1 6E、4 6想一想.....原创 2013-08-19 17:12:53 · 1429 阅读 · 0 评论 -
PHP如何大幅度提升运行效率? -- 把它编译成机器码!
书接上回 今天讨论如何大幅度提升PHP的运行效率。在这,我们不纠结神马单双引号、全局变量、OO、require_once、错误抑制....在这,我们也不讨论APC、opcache、XCache、eaccelerator....我们知道,php的执行需要把脚本翻成Opcodes,经过一定的优化(需要工具支持)后再交给zend引擎去执行。那么为什么不把PHP编译成机器码直接去运行呢原创 2013-06-10 14:25:50 · 2942 阅读 · 0 评论 -
PHP关于变量声明的一个有趣的实验
$a;if($a == NULL)echo "a == null\n";if($a === NULL)echo "a === null\n";if($b == NULL)echo "b == null\n";if($b === NULL)echo "b === null\n";if($b == $a)echo "b == a\n";if($b === $a)echo "b === a\原创 2013-05-27 04:23:42 · 342 阅读 · 0 评论 -
配置ZendDebugger小计
丫PHP5.3.20 从 zend家网站上下载好的ZendDebugger.so死活不能用,在phpinfo上没显示。看日志:Failed loading /usr/lib/php/modules/ZendDebuggerx.so: /usr/lib/php/modules/ZendDebuggerx.so: cannot open shared object file: No su原创 2012-12-28 11:31:04 · 771 阅读 · 0 评论 -
zend form 防止重复提交
zend form ,我们常用它的表单检查和大规模创建表单操作,但是好像它并没有给出防止表单重复提交的方案,除了在页面上做脚本(js)锁定操作的方案外,我们还要在服务器端做更加安全的检查。下面介绍一下我的方案:利用session(或缓存)和form token来防止表单的重复提交。核心是一个表单基类和一个validator。表单基类:<?php/** * 表单基类,负责添加表单原创 2012-10-03 13:33:50 · 852 阅读 · 0 评论 -
php,你可能不知道的“死亡”陷阱
die(time()*1000);会输出什么?嗯也许你会说它输出当前时间戳的1000倍。但是你错了!它并不一定按照你的预期输出正确的值。在32位的操作系统中,它会输出时间戳的1000倍,但在64操作系统中它什么也不会输出。why?看看手册吧:如果 PHP 的版本号大于等于 4.2.0,那么在 die参数是整数的情况下,不会输出该参数。好吧,在原创 2012-06-02 14:07:40 · 1494 阅读 · 0 评论 -
php的safe_mode
原文链接:http://hipop.co.cc/archives/23 来自鞠润龙的个人主页好吧,本博客的开篇作,就从wp的安装说起吧。本博客安装完成之后,有一个大问题:无法上传文件报如下错误:[code]Warning: copy() [function.copy]: SAFE MODE Restriction in effect. The script wh原创 2012-06-02 14:02:44 · 938 阅读 · 0 评论 -
centos添加yum官方repo源,安装,升级php5.2.x
[root@QA-Server ~]# rpm –import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka[root@QA-Server ~]# vim /etc/yum.repos.d/utterramblings.repo[utterramblings]name=Jason’s Utter Ramblings Rep转载 2012-03-27 19:18:17 · 1049 阅读 · 0 评论 -
vsftp 虚拟账户的 site chmod 的启用
vsftp中使用了虚拟账户,但在默认配置下虚拟账户没有site chmod的使用权限,总是报550 Permission denied 。让vsftp虚拟用户拥有site chmod的权限的方法是:1、让vsftp的本地用户(我的是vsuer)拥有文件的目录。2、修改vsftpd.conf配置文件guest_enable=YES #允许guest以vuser访问gue原创 2011-11-05 10:23:26 · 1160 阅读 · 0 评论 -
iframe的跨域注意事项,待更新
window.frames[0].document 会报 Permission denied to access property ‘document’ 错误,百思不得其解啊!原来iframe的src指向了百度,这个就涉及跨域的,如果能让你轻易的获得document对象,那么就会原创 2011-09-22 15:25:27 · 892 阅读 · 0 评论 -
web页面中文件域的美化
如何做出型如下图示的文件域? 其实很简单: 原理:两层,底层是带背景图的div;顶层是透明了的文本域。原创 2011-06-21 13:13:00 · 720 阅读 · 0 评论 -
解决ie6下margin-top为负值的bug
解决ie6下margin-top为负值的bug2009/12/29 16:53近期项目遇到一个浏览器兼容问题在ie6下margin-top为负值的时候,出现了位置的错误加上position:relative就好了以前没有遇到过这样的问题ie6/7/firefox/chrome浏览器均一致转载 2010-02-07 18:09:00 · 1862 阅读 · 0 评论 -
zend form 防止重复提交(2)
我在上一篇文章“zend form 防止重复提交”里讲了如何自己实现zend form的防重复提交。但在最近的使用过程中,笔者愧疚的发现,zendframework(1.11) 的form已经实现了这个功能。并且实现的原理与笔者描述基本一致,不过它使用了“Zend_Form_Element_Hash”这个表单元素。在校验时,使用“Identical”校验器。$form->addElem原创 2012-10-16 10:12:50 · 675 阅读 · 0 评论 -
Zend Optimizer 开源了?
http://www.oschina.net/news/37214/zend-optimizer-plus-opensource看到这个,我只能“卧槽、呵呵”了~!原创 2013-01-30 03:38:14 · 392 阅读 · 0 评论 -
别迷糊了!PHP_SELF、 SCRIPT_NAME、 REQUEST_URI !
PHP_SELF、 SCRIPT_NAME、 REQUEST_URI 具体区别可以看各个版本的手册。这里稍作总结$_SERVER[PHP_SELF], $_SERVER[SCRIPT_NAME], $_SERVER['REQUEST_URI'] 在用法上是非常相似的,他们返回的都是与当前正在使用的页面地址有关的信息,这里列出一些相关的例子,帮助确定哪些是在你的脚本最适合的。$_转载 2013-01-18 10:59:20 · 544 阅读 · 0 评论 -
PHP的NULL与变量声明 -- 一个有趣的试验
$a;if($a == NULL)echo "a == null\n";if($a === NULL)echo "a === null\n";if($b == NULL)echo "b == null\n";if($b === NULL)echo "b === null\n";if($b == $a)echo "b == a\n";if($b === $a)echo "b === a\原创 2013-05-27 04:18:35 · 1303 阅读 · 0 评论 -
PHP 交换数组键值 工作日记
array_flip交换键值 键名(索引)和值的交换原创 2013-05-26 15:30:49 · 3069 阅读 · 0 评论 -
PHP中sha1_file与md5_file哪个更快?
文件上传要做哈希,当然是越快越好,文件哈希有sha1_file与md5_file。哪个更快呢?网上也没搜到相关的文章,于是决定做一个小测试:测试代码如下://哈希效率function microtime_float(){ list($usec, $sec) = explode(" ", microtime()); return ((float)$usec +原创 2013-05-22 15:42:22 · 6759 阅读 · 1 评论 -
PHP的Wrappers
源于读鸟哥的博文http://www.laruence.com/2012/08/30/2731.html发现PHP可以支持很多WrappersSupported Protocols and Wrappersfile://http:// ftp://php:// zlib://data://glob://phar://ssh2://rar://og原创 2013-05-18 19:31:48 · 1228 阅读 · 0 评论