IT技术博客大学习 共学习 共进步
首页 / 风雪之隅
IT 2012-02-05 15:38:46 / 累计浏览 3,120

我们什么时候应该使用异常?

异常与之对应的错误码(或者状态码), 到底各自有什么优点, 缺点, 我们应该怎么使用呢?

IT 2012-02-01 17:36:46 / 累计浏览 2,040

使用exit(-1)为什么得到255退出码?

今天有人在微博上问了一个问题, 使用: string exec ( string $command [, array &$output [, int &$return_var ]] ) 调用一个程序, 程序退出-1, 但是PHP得到的为什么是255?

IT 2012-01-16 00:05:59 / 累计浏览 4,240

PHP的历史

了解下PHP的历史, 有助于更加深刻的了解PHP发展到今天的轨迹, 下面的文字都是从>> PHP手册中转载过来的. PHP 在过去的几年里走过了漫长的道路。成长为处理 web 的最卓越的语言并非易事。如果对 PHP 如何发展到今天很感兴趣,那么请继续读下去吧。

IT 2012-01-16 00:02:50 / 累计浏览 5,080

如何设置一个严格30分钟过期的Session

今天在我的微博(Laruence)上发出一个问题: 我在面试的时候, 经常会问一个问题: \"如何设置一个30分钟过期的Session?\", 大家不要觉得看似简单, 这里面包含的知识多着呢, 特别适合考察基本功是否扎实, 谁来回答试试? 呵呵 为什么问这个问题呢? 1. 我在Twitter上看到了有人讨论这个

IT 2012-01-03 23:41:48 / 累计浏览 2,240

通过调用Hash冲突实现各种语言的拒绝服务攻击漏洞

上周的时候Dmitry突然在5.4发布在即的时候, 引入了一个新的配置项: Added max_input_vars directive to prevent attacks based on hash collisions 这个预防的攻击, 就是\"通过调用Hash冲突实现各种语言的拒绝服务攻击漏洞\"(multiple implementations denial-of-service via hash algorithm collision).

IT 2012-01-03 23:39:11 / 累计浏览 2,580

PHP数组的Hash冲突实例

上一篇文章, 我介绍了一个利用Hash冲突(碰撞)来对各种语言(包括,PHP, Java, Ruby等等)实施拒绝服务攻击的可能, 但是没有给出实例, 文章发出后, @Ferrari同学给出了一个另外一篇文章Supercolliding a PHP array, 文章中作者介绍了一种基于PHP的冲突实例, 以及带来的性能恶化对比. 我就借花献佛, 翻译给大家看看. 你知道不知道, 插入65536个经过构造的键值的元素到PHP数组, 会需要耗时30秒以上? 而一般的这个过程仅仅需要...

IT 2011-12-22 22:19:12 / 累计浏览 2,680

关于PHP浮点数你应该知道的(All ‘bogus’ about the float in PHP)

PHP是一种弱类型语言, 这样的特性, 必然要求有无缝透明的隐式类型转换, PHP内部使用zval来保存任意类型的数值, zval的结构如下(5.2为例): ....... 今天的话题, 我们只关注其中的俩个成员, lval和dval, 我们要意识到, long lval是随着编译器, OS的字长不同而不定长的, 它有可能是32bits或者64bits, 而double dval由IEEE 745规定, 是定长的, 一定是64bits. 请记住这一点, 造就了PHP的一些代码的\"非平台无...

IT 2011-12-11 16:05:24 / 累计浏览 3,040

更简单的重现PHP Core的调用栈

以前, 我曾经介绍过如何通过PHP的Core文件获取信息:如何调试PHP的Core之获取基本信息, 对于调用参数这块, 当时介绍的获取方法比较复杂. 于是今天我为PHP 5.4的.gdbinit做了一个改进, 以后如果你遇到了PHP 5.4的core, 那么就可以简单的得到PHP 5.4发生Core时, 包括参数的函数调用栈的信息.

IT 2011-11-21 00:04:15 / 累计浏览 1,920

GBK编码PHP脚本导致语法错误(Zend Multibyte)

我在试验PHP5.4 RC1的时候, 发现了一个BUG, PHP 5.4 不能正确的转换GBK编码到UTF8编码, 不过现在我已经修复. 大家如果遇到这个问题, 请关注马上要发布的PHP5.4 RC2即可.. 谢谢

IT 2011-11-13 21:41:33 / 累计浏览 1,480

zend_signal in PHP 5.4

在PHP5.4中, 根据由Rasmus提交的RFC, 引入了一套新的信号处理机制, 目的是为了使得信号屏蔽机制可以应用到任何SAPI中, 并且提高在这个过程中的PHP性能. 新的机制, 叫做zend signal, 它的理念, 来自Yahoo的\"延迟信号处理\"(Yahoo signal deferring mechanism), 而后, facebook把这套理念加入了PHP中, 为了提升PHP+Apache 1.X下PHP调用ap_block/ap_unblock的性能. 在详细介绍之前, 我想还是先介绍下引入这个新...

IT 2011-11-13 21:07:02 / 累计浏览 3,640

PHP原理之内存管理中难懂的几个点

PHP的内存管理, 分为俩大部分, 第一部分是PHP自身的内存管理, 这部分主要的内容就是引用计数, 写时复制, 等等面向应用的层面的管理. 而第二部分就是今天我要介绍的, zend_alloc中描写的关于PHP自身的内存管理, 包括它是如何管理可用内存, 如何分配内存等. 另外, 为什么要写这个呢, 因为之前并没有任何资料来介绍PHP内存管理中使用的策略, 数据结构, 或者算法. 而在我们平时开发扩展, 修复PHP的bug的时候, 却对这一部分...

IT 2011-11-13 21:06:21 / 累计浏览 2,460

PHP5.4新特性-解引用实例化

PHP的语法分析系统, 是一个历史悠久的系统, 在这个蛮长的的历史中, 不停的修修补补, 或多或少的会造成一些特定的特性. 而如果要重写, 继耗时, 又耗力, 并且很难做到和现在的完全兼容, 所以我想, 要完全重写, 那也只能是PHP6了(替开发组宣布一下, PHP6目前已经停止开发, 也暂时不会有这种提法)

IT 2011-11-06 22:31:13 / 累计浏览 2,040

Yaf的性能对比测试

从Yaf诞生以来, 我就没把它与其他框架的性能对比测试放出来, 原因呢, 也很简单, 我懒, 没对比过(只是和原生的PHP做了简单的对比). 最近, 关注Yaf的人越来越多, 今天从访问来源发现了这个页面reddit.com, 继而发现了Eryx朋友, 做的一份性能对比测试, 我就借花谢佛, 转载了过来.

IT 2011-11-04 22:06:01 / 累计浏览 1,340

三元式(ternary)性能优化

PHP 5.4 由Arnaud 引入了一个对三元式的优化方案. 我们都知道PHP用写时复制来对变量复制做性能优化, 而在以前的三元式中, 却每次都会复制, 这在操作数是大数组的情况下, 会造成性能问题。

IT 2011-10-14 13:49:04 / 累计浏览 3,600

PHP正则之递归匹配

我记得早前有同事问, 正则是否能处理括号配对的正则匹配. 比如, 对于如下的待匹配的字符串: ((())) 就是一个括号配对的字符串. 而对于如下的待匹配字符串: ((() 则不是一个括号配对的字符串. 在以前, 这种情况, 正则无法处理, 最多只能处理固定层数的递归, 而无法处理无线递归的情况... 而在perl 5.6以后, 引入了一个新的特性: Recursive patterns, 使得这种需求可以被正确的处理.

IT 2011-10-14 13:43:52 / 累计浏览 2,180

mysqlnd插件mysqlnd_ms的介绍

从PHP5.3开始, MySQL team专为PHP开发的MySQL连接库mysqlnd(MySQL native driver for PHP)终于和PHP一起发布了. mysqlnd的主要目的是为了解决长久以来mysql和php的license的问题. 它将作为PHP的源代码的一部分和PHP一起发布. 今天, 我要为大家介绍一个mysqlnd的插件:mysqlnd_ms, 这个插件是由mysqlnd的开发者和johannes一起开发的, 目前发布在PECL: mysqlnd_ms

IT 2011-10-12 00:01:16 / 累计浏览 3,660

让Json更懂中文(JSON_UNESCAPED_UNICODE)

我们知道, 用PHP的json_encode来处理中文的时候, 中文都会被编码, 编程不可读的, 类似\"\\u***\"的格式. 不仅不易读, 还会扩大传输的数据量.

IT 2011-10-12 00:00:31 / 累计浏览 2,860

上传进度支持(Upload progress in sessions)

文件上传进度反馈, 这个需求在当前是越来越普遍, 比如大附件邮件. 在PHP5.4以前, 我们可以通过APC提供的功能来实现. 或者使用PECL扩展uploadprogress来实现. 虽然说, 它们能很好的解决现在的问题, 但是也有很明显的不足: 1. 他们都需要额外安装(我们并没有打算把APC加入PHP5.4) 2. 它们都使用本地机制来存储这些信息, APC使用共享内存, 而uploadprogress使用文件系统(不考虑NFS), 这在多台前端机的时候会造成麻烦. ...

IT 2011-10-11 23:59:11 / 累计浏览 2,080

Array dereferencing

首先, 这个标题我不太清楚怎么翻译才能表达确切的意思, 直译不太妥当. 在PHP5.4中, 有一个新的改进: - Added array dereferencing support. (Felipe)

IT 2011-10-11 23:55:16 / 累计浏览 1,780

JsonSerializable接口

Json是Ajax应用中最为通用的数据传输格式(协议), 主流的编程语言都带有对Json的支持, 在PHP中, 有json_encode/json_decode, 可以很方便的构造Json数据格式.