您现在的位置:首页
--> 风雪之隅
今天在bugs.php.net上, 有一个用QQ邮箱的用户发了一个问题(#55731). 他问, 为什么, 如下的代码, 会调用俩遍getter: 一开始, 我只是简单的回答了下, 和他在__get中再次获取$this->elmname有关系. 后来这个同学又要追问原因, 我只好用我那糟糕的英语给他解释. 可能用英语没太讲明白, 我现在用中文解释下吧.
整理了一下, PHP的进化历程.
最近同事"神经病"同学的项目中, 发现一个问题. 用firefox打开多个tab, 每个tab都去请求同一个URL(尽量同时), 会发现, 这些请求, 会被浏览器串行化. 也就是说, 浏览器会在第一个页面请求结束以后, 再发起第二个请求.
在PHP 5.4的更新list上, 有一句: 提升了Zend引擎的性能, 减少了内存占用. 那么, 到底是怎么提升的呢?
Zend Parameters Parser新增类型描述符介绍
其实一直想写这个系列, 但是一想到这个话题的宽泛性, 我就懒得想了. 今天我也不打算全部讲如何调试一个PHP的Core文件, 也不会介绍什么是Coredump, 选择一个相对比较简单的方向来介绍, 那就是如何从PHP的Core文件中获取一些对我们重演这个Core有帮助的信息.
4月的时候, 做了一个关于PHP性能优化的技术交流. 今天把当时交流的PPT放到slideShare了. 顺便谈一下对PHP性能优化的一些看法.
在Apache Prefork模式下, 启动的时候, Apache就会fork出一些worker进程, 来准备接受请求, 这些worker进程, 在完成准备工作以后, 就会进入block模式的监听沉睡中, 等待请求到来而被唤醒.
昨天有人在群里问, MySQL是否可以设置读写超时(非连接超时), 如果可以就可以避免一条SQL执行过慢, 导致PHP超时错误. 这个, 其实可以有. 只不过稍微要麻烦点.
如果在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
以下是一些PHP Coding Tips. 当然, 这些Tips并不一定仅仅局限于PHP. 大家有什么好的心得, 欢迎直接回复本文与更多的人分享.. 谢谢本文长期更新, 请关注PHP Coding Tips
今天同事eddix告诉我发现一个PHP的warning, $php --re dummy Warning: Internal error: Cannot find extension function Dummy in global function table in Unknown on line 0 以前没有遇到过, 不知道什么意思.
在上一篇文章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的保护, 但, 其实我们却疏忽了一点...
这是因为对于Hashtable来说, 定义它的时候, 不可能一次性分配足够多的内存块, 来保存未知个数的元素, 所以PHP会在初始化的时候, 只是分配一小部分内存块给HashTable, 当不够用的时候再RESIZE扩容,而Hashtable, 只能扩容, 不会减少, 对于上面的例子, 当我们存入100个变量的时候, 符号表不够用了, 做了一次扩容, 而当我们依次unset掉这100个变量以后, 变量占用的内存是释放了(118848
你也许注意到过, 在PHP中使用ECHO输出字符串的时候, 执行时间会明显的长, 也就会有朋友认为PHP的ECHO性能很差. 我在之前的文章中, 已经解释过了原因, 也希望能纠正\"PHP的ECHO性能差\"的这个误会. 然而之前的文章, 也仅仅是给出了原因, 并没有介绍如何避免这个问题, 在今天公司内的某个产品线(Apache with PHP)发现了一个问题, 有用户在短时间内大量发起下载请求, 导致http连接数和数据库连接数剧增, 而数据库连接数剧增的原...
一个同事forward过来一个, 公司某产品线遇到的一个低概率, 但长时间出现了几次的Core的bt信息, 找我帮忙分析下原因。
之前和人讨论过这个问题,,, 今天感冒在家休息, 就回忆了一下, 整理如下. 我们很多的应用在使用Ajax的时候, 大多数情况都是询问型操作, 比如提交数据, 则Ajax只是期待服务器返回: {status: 0, message:""} //status 0代表成功, 非零的时候, message中包含出错信息.
比如, 我提供一个查询服务, 用户可以提交一个人的名字和年龄做为查询条件. 假设我要查询一个名字叫做\"laruence\", 年龄是27的人, 我认为这个人的定义的查询token可以写做: laruence=27 不幸的是, 当这样的一个token做为query string提交给服务器的处理脚本的时候, 你就会发现, 诶,,我不知道用户名是什么,,, 那么能否在PHP中获取到一个变量的名字呢?
一般很少有用PHP做服务的, 但是如果你的已有业务逻辑都是PHP实现的, 而现在却需要基于已有的业务逻辑提供一套Socket服务, 怎么办? 当然, 解决方法很多, 但最简单的办法, 还是直接使用PHP做Socket服务. 而这样做要解决的问题有很多, 主要要解决的问题有如下几个: 1. 作为后台服务,需要常驻后台运行, 那么丁点的内存泄露都是不能接受的. 2. 作为后台服务,畸形数据导致进程异常退出, 也是不可接受的. 3. 作为后台服务, 要能...
近3天十大热文
- [69] Twitter/微博客的学习摘要
- [68] IOS安全–浅谈关于IOS加固的几种方法
- [66] 如何拿下简短的域名
- [65] android 开发入门
- [63] find命令的一点注意事项
- [62] Go Reflect 性能
- [61] 流程管理与用户研究
- [60] Oracle MTS模式下 进程地址与会话信
- [59] 图书馆的世界纪录
- [57] 读书笔记-壹百度:百度十年千倍的29条法则
赞助商广告