您现在的位置:首页
--> PHP
其实一直想写这个系列, 但是一想到这个话题的宽泛性, 我就懒得想了. 今天我也不打算全部讲如何调试一个PHP的Core文件, 也不会介绍什么是Coredump, 选择一个相对比较简单的方向来介绍, 那就是如何从PHP的Core文件中获取一些对我们重演这个Core有帮助的信息.
因为php的语法要求不严格,字符串也可以当数组使用,这样就存在一个问题:当使用非数字作为key访问字符串中的内容时,就可能会带来一些不一致的情况,如下面的代码....
这篇文章中的建议涵盖了大部分PHP代码性能方面的问题。如果你是做一些小网站或者小项目,那么有理由忽略这些建议,但是当你为大量用户提供长期稳定的服务的时候,就必须关注了。开发人员必须从项目一开始就考虑这些建议,它会极大的改善你的网站的性能。 在PHP中,通常有很多的方法可以来达到相同的目的,但是开发人员通常选择他们最熟悉的用起来最舒服的一种方式,但是有些事必须注意的: echo比print要快很多。两个方法都会在页...
PHP内核介绍及扩展开发指南―高级主题
类和对象(TODO) 附录A. Extension的编译 Extension的编译是比较简单的,下面是个示例Makefile: # 扩展搜索目录,模块被放到这里才能被找到和加载 # 可以从php.ini中的extension_dir命令获取该值 PHP_EXT_HOME=/home/wiki/php5/lib/php/extensions/ # PHP源代码路径 PHP_SRC=/home/wiki/wikienv/install/php-5.2.3 INCLUDE=-I$(PHP_SRC) -I$(PHP_SRC)/main -I$(PHP_SRC)/TSRM -I$(PHP_SRC)/Zend CC=gcc all: first_module.s...
4月的时候, 做了一个关于PHP性能优化的技术交流. 今天把当时交流的PPT放到slideShare了. 顺便谈一下对PHP性能优化的一些看法.
简要介绍一些Zend引擎的内部机制,这些知识和Extensions密切相关,同时也可以帮助我们写出更加高效的PHP代码。
Extensions 的编写理解了这些运行机制以后,本章着手介绍Extensions 的编写,但凡写程序的人都知道hello world,那好,就从hello world开始。
使用PHP解析XML文档时,常用simplexml_load_string函数,但如果XML很复杂(比如有命名空间),simplexml_load_string基本就没戏了,此时可以使用SimpleXMLElement。
有一天我跟在DUMBO的一个非常棒的创业公司的老板聊天,谈到为什么非PHP界的开发人员普遍轻视PHP和PHP相关社区。他提出了一个观点让我印象很深,很大程度上是因为以前从来没有听到过这样的说法。 如果你不知道大多数的程序员都会对PHP发什么样的牢骚,那么,这些牢骚差不多会像这样: 语法丑陋 缺乏其它语言都有的一些必要的特征(在5.3版本之前,没有命名空间,闭包) 不一致的函...
目前php站点的安全配置基本是open_basedir+safemode,确实很无敌、很安全,即使在权限没有很好设置的环境中,这样配置都是相当安全的,当然了,不考虑某些可以绕过的情况。本文讨论两点开启...
如果在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
问题:将mysql连接或memcache连接变量直接unset()或赋值为null,连接会立即关闭吗?
PHP中有些类似于函数的东西其实不是函数,如 echo exit unset print 等。 怎么可以快速知道这些是函数还是结构呢?
今天同事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的保护, 但, 其实我们却疏忽了一点...
伪造跨站请求介绍伪造跨站请求比较难以防范,而且危害巨大,攻击者可以通过这种方式恶作剧,发spam信息,删除数据等等。这种攻击常见的表现形式有: 伪造链接,引诱用户点击,或是让用户在不知情的情况下访问
这是因为对于Hashtable来说, 定义它的时候, 不可能一次性分配足够多的内存块, 来保存未知个数的元素, 所以PHP会在初始化的时候, 只是分配一小部分内存块给HashTable, 当不够用的时候再RESIZE扩容,而Hashtable, 只能扩容, 不会减少, 对于上面的例子, 当我们存入100个变量的时候, 符号表不够用了, 做了一次扩容, 而当我们依次unset掉这100个变量以后, 变量占用的内存是释放了(118848
近3天十大热文
- [68] IOS安全–浅谈关于IOS加固的几种方法
- [67] Twitter/微博客的学习摘要
- [63] 如何拿下简短的域名
- [63] android 开发入门
- [63] Go Reflect 性能
- [61] find命令的一点注意事项
- [60] Oracle MTS模式下 进程地址与会话信
- [59] 流程管理与用户研究
- [58] 【社会化设计】自我(self)部分――欢迎区
- [56] 图书馆的世界纪录
赞助商广告