微薄上有同学问我:
GBK环境下如下php代码:<?php echo("洪仁玕");?> 会引发php的语法错误,如何解决?
这个是因为, 在GBK环境下, "玕"的编码是"0xab 0x5c, 所以, 又是一个'5c'引发的问题..
一般来说, 还是建议大家用unicode作为代码文件的字符集, 如果要使用GBK, 再主动转换下.
不过, 就问题说问题, 如果你的脚本非要GBK编码, 那怎么避免这个问题呢?
左手代码右手诗
微薄上有同学问我:
GBK环境下如下php代码:<?php echo("洪仁玕");?> 会引发php的语法错误,如何解决?
这个是因为, 在GBK环境下, "玕"的编码是"0xab 0x5c, 所以, 又是一个'5c'引发的问题..
一般来说, 还是建议大家用unicode作为代码文件的字符集, 如果要使用GBK, 再主动转换下.
不过, 就问题说问题, 如果你的脚本非要GBK编码, 那怎么避免这个问题呢?
在以前的PHP中, 我们并不能直接去操作一个对象实例化的结果:
<?php (new Foo())->show(); //PHP Parse error: syntax error, unexpected T_OBJECT_OPERATOR
我们只能, 把实例化结果先保存起来, 然后再调用:
$a = new Foo(); $a->show();
PHP的内存管理, 分为俩大部分, 第一部分是PHP自身的内存管理, 这部分主要的内容就是引用计数, 写时复制, 等等面向应用的层面的管理. 而第二部分就是今天我要介绍的, zend_alloc中描写的关于PHP自身的内存管理, 包括它是如何管理可用内存, 如何分配内存等.
另外, 为什么要写这个呢, 因为之前并没有任何资料来介绍PHP内存管理中使用的策略, 数据结构, 或者算法. 而在我们平时开发扩展, 修复PHP的bug的时候, 却对这一部分的知识需要有一个良好的理解. PHP开发组内的很多朋友也对这块不是很清楚, 所以我觉得有必要专门写一下.
一些基本的概念, 我就不赘述了, 因为看代码很容易能看懂, 我这里就主要介绍几个看代码没那么容易看懂的点, 为什么这么说呢, 呵呵, 我在写文章之前, 查找了下已有的资料, 已避免重复功, 其中看到了TIPI项目对这部分的描述, 发现其中错误很多. 所以, 我想这部分就是看代码也没那么容易看懂的点 🙂
从Yaf诞生以来, 我就没把它与其他框架的性能对比测试放出来, 原因呢, 也很简单, 我懒, 没对比过(只是和原生的PHP做了简单的对比).
最近, 关注Yaf的人越来越多, 今天从访问来源发现了这个页面reddit.com, 继而发现了Eryx朋友, 做的一份性能对比测试, 我就借花谢佛, 转载了过来.
测试机器:
* Hardware CPU: Intel Core i5 750 (2.67GHz x4) RAM: 4GB * Software Debian 6.0.2 x86_64 (2.6.32-5-amd64) apache 2.2.16 mpm-prefork mod-php5 php 5.3.6 php-apc 3.1.3p1with 14 Comments
PHP 5.4 由Arnaud 引入了一个对三元式的优化方案.
我们都知道PHP用写时复制来对变量复制做性能优化, 而在以前的三元式中, 却每次都会复制, 这在操作数是大数组的情况下, 会造成性能问题:
<?php $a = range(1, 1000); $i = 0; $start = microtime(true); while (++$i < 1000) { $b = isset($a)? $a : NULL; } var_dump(microtime(true) - $start);