IT技术博客大学习 共学习 共进步
首页 / 风雪之隅
IT 2011-09-25 13:35:07 / 浏览 2,780

回答下在bugs.php上的一个问题

今天在bugs.php.net上, 有一个用QQ邮箱的用户发了一个问题(#55731). 他问, 为什么, 如下的代码, 会调用俩遍getter: 一开始, 我只是简单的回答了下, 和他在__get中再次获取$this->elmname有关系. 后来这个同学又要追问原因, 我只好用我那糟糕的英语给他解释. 可能用英语没太讲明白, 我现在用中文解释下吧.

IT 2011-07-16 20:42:28 / 浏览 4,060

浏览器多tab打开同一URL串行化的问题

最近同事"神经病"同学的项目中, 发现一个问题. 用firefox打开多个tab, 每个tab都去请求同一个URL(尽量同时), 会发现, 这些请求, 会被浏览器串行化. 也就是说, 浏览器会在第一个页面请求结束以后, 再发起第二个请求.

IT 2011-07-14 23:53:39 / 浏览 4,220

Zend引擎的优化

在PHP 5.4的更新list上, 有一句: 提升了Zend引擎的性能, 减少了内存占用. 那么, 到底是怎么提升的呢?

IT 2011-06-23 13:26:21 / 浏览 3,400

如何调试PHP的Core之获取基本信息

其实一直想写这个系列, 但是一想到这个话题的宽泛性, 我就懒得想了. 今天我也不打算全部讲如何调试一个PHP的Core文件, 也不会介绍什么是Coredump, 选择一个相对比较简单的方向来介绍, 那就是如何从PHP的Core文件中获取一些对我们重演这个Core有帮助的信息.

IT 2011-06-01 13:20:59 / 浏览 3,680

PHP Performance Optimization

4月的时候, 做了一个关于PHP性能优化的技术交流. 今天把当时交流的PPT放到slideShare了. 顺便谈一下对PHP性能优化的一些看法.

IT 2011-05-17 09:21:43 / 浏览 2,820

Apache Access Log中的Options的含义

 在Apache Prefork模式下, 启动的时候, Apache就会fork出一些worker进程, 来准备接受请求, 这些worker进程, 在完成准备工作以后, 就会进入block模式的监听沉睡中, 等待请求到来而被唤醒.

IT 2011-04-27 23:58:38 / 浏览 1,820

为MySQL设置查询超时

昨天有人在群里问, MySQL是否可以设置读写超时(非连接超时), 如果可以就可以避免一条SQL执行过慢, 导致PHP超时错误. 这个, 其实可以有. 只不过稍微要麻烦点.

IT 2011-04-02 14:13:20 / 浏览 4,200

深入理解PHP原理之Session Gc的一个小概率Notice

如果在ubuntu下, 采用apt安装的PHP, 那么在使用Session的时候, 就可能会有小概率遇到这个提示. PHP Notice: session_start(): ps_files_cleanup_dir: opendir(/var/lib/php5) failed: Permission denied (13) in /home/laruence/www/htdocs/index.php on line 22

IT 2011-03-30 14:00:30 / 浏览 3,500

一些PHP Coding Tips

以下是一些PHP Coding Tips. 当然, 这些Tips并不一定仅仅局限于PHP. 大家有什么好的心得, 欢迎直接回复本文与更多的人分享.. 谢谢本文长期更新, 请关注PHP Coding Tips

IT 2011-03-22 23:48:14 / 浏览 2,140

PHP Reflection Extension的一个bug

今天同事eddix告诉我发现一个PHP的warning, $php --re dummy Warning: Internal error: Cannot find extension function Dummy in global function table in Unknown on line 0 以前没有遇到过, 不知道什么意思.

IT 2011-03-21 00:12:49 / 浏览 3,600

可序列化单例模式的遗留问题答案

在上一篇文章Serialize/Unserialize破坏单例的最后, 我留下了一个问题, 为了让大家能思考, 我就单独再写一篇给出答案.

IT 2011-03-21 00:10:23 / 浏览 2,500

Serialize/Unserialize破坏单例

我们经常采用如下方式定义单列: class Singleton { private static $instance = NULL; /** 不容许直接调用构造函数 */ private function __construct() { } /** 不容许深度复制 */ private function __clone() { } public static function getInstance() { if (NULL === self::$instance) { self::$instance = new self(); } return self::$instance; } } 很多人都会记得对深度copy的保护, 但, 其实我们却疏忽了一点...

IT 2011-03-03 21:17:11 / 浏览 3,040

PHP内存管理:谁动了我的内存

这是因为对于Hashtable来说, 定义它的时候, 不可能一次性分配足够多的内存块, 来保存未知个数的元素, 所以PHP会在初始化的时候, 只是分配一小部分内存块给HashTable, 当不够用的时候再RESIZE扩容,而Hashtable, 只能扩容, 不会减少, 对于上面的例子, 当我们存入100个变量的时候, 符号表不够用了, 做了一次扩容, 而当我们依次unset掉这100个变量以后, 变量占用的内存是释放了(118848

IT 2011-02-13 21:04:21 / 浏览 3,800

加速PHP的ECHO

你也许注意到过, 在PHP中使用ECHO输出字符串的时候, 执行时间会明显的长, 也就会有朋友认为PHP的ECHO性能很差. 我在之前的文章中, 已经解释过了原因, 也希望能纠正\"PHP的ECHO性能差\"的这个误会. 然而之前的文章, 也仅仅是给出了原因, 并没有介绍如何避免这个问题, 在今天公司内的某个产品线(Apache with PHP)发现了一个问题, 有用户在短时间内大量发起下载请求, 导致http连接数和数据库连接数剧增, 而数据库连接数剧增的原...

IT 2011-01-19 22:04:59 / 浏览 3,260

HTTP 204和205的应用

之前和人讨论过这个问题,,, 今天感冒在家休息, 就回忆了一下, 整理如下. 我们很多的应用在使用Ajax的时候, 大多数情况都是询问型操作, 比如提交数据, 则Ajax只是期待服务器返回: {status: 0, message:""} //status 0代表成功, 非零的时候, message中包含出错信息.

IT 2010-12-08 22:14:19 / 浏览 2,820

如何获取一个变量的名字

比如, 我提供一个查询服务, 用户可以提交一个人的名字和年龄做为查询条件. 假设我要查询一个名字叫做\"laruence\", 年龄是27的人, 我认为这个人的定义的查询token可以写做: laruence=27 不幸的是, 当这样的一个token做为query string提交给服务器的处理脚本的时候, 你就会发现, 诶,,我不知道用户名是什么,,, 那么能否在PHP中获取到一个变量的名字呢?

IT 2010-10-31 20:35:14 / 浏览 2,360

基于PHP的pcntl扩展的Mpass介绍

一般很少有用PHP做服务的, 但是如果你的已有业务逻辑都是PHP实现的, 而现在却需要基于已有的业务逻辑提供一套Socket服务, 怎么办? 当然, 解决方法很多, 但最简单的办法, 还是直接使用PHP做Socket服务. 而这样做要解决的问题有很多, 主要要解决的问题有如下几个: 1. 作为后台服务,需要常驻后台运行, 那么丁点的内存泄露都是不能接受的. 2. 作为后台服务,畸形数据导致进程异常退出, 也是不可接受的. 3. 作为后台服务, 要能...