msgbartop
PHP语言, PHP扩展, Zend引擎相关的研究,技术,新闻分享 – 左手代码 右手诗
msgbarbottom

29 Oct 10 Mpass – PHP做Socket服务的解决方案

一般很少有用PHP做服务的, 但是如果你的已有业务逻辑都是PHP实现的, 而现在却需要基于已有的业务逻辑提供一套Socket服务, 怎么办?

当然, 解决方法很多, 但最简单的办法, 还是直接使用PHP做Socket服务.

而这样做要解决的问题有很多, 主要要解决的问题有如下几个:

1. 作为后台服务,需要常驻后台运行, 那么丁点的内存泄露都是不能接受的.
2. 作为后台服务,畸形数据导致进程异常退出, 也是不可接受的.
3. 作为后台服务, 要能做到graceful restart.
4. 作为后台服务, 对资源的使用必须在可接受的范围以内.

最近,我就基于PHP写一个简单的提供Socket服务的框架. 取其名为Mpass(Multi-Processes Socket Server).

12 Oct 10 PHP的命名空间的实现

PHP的命名空间, 实现的还真是简单.

当你有如下代码:

<?php
  namespace Yaf;
  class Application {
  }

其实就相当于, 你声明了一个名字为A\B的类, 当然, 你不能直接这么申明(只是不能在PHP脚本中这么申明).

27 Sep 10 PHP stream未能及时清理现场导致Core的bug

同事发现一个在使用set_error_handler的时候, 能100%重现的core, 提炼后的重现代码如下(环境必须不能访问internet):

<?php
function err_handler(){
    exit;
    return true;
}

set_error_handler('err_handler');
$client = file_get_contents("http://www.laruence.com/ServiceNoWse.asmx?WSDL");

这段代码, 放在webServer中, 第一次访问不会有事, 第二第三次的时候就会出core.

04 Sep 10 Yaf-一个PHP扩展实现的PHP框架

快有一个月没有更新Blog了, 一来是最近项目比较紧张, 二来就是在忙着开发Yaf(Yet another Framework)

一直以来, 我研究PHP的内核, 虽然有文章不少, 但却鲜有一些借助这些研究成果而来的, 实际的东西, 也就无法让更多人学习到对Zend API的实际运用.

我思考了一段时间, 觉得有必要写一个扩展出来, 这个扩展要用到很多Zend API, 要用到很多在网上的PHP扩展开发中,鲜有叙及的部分(比如, 实现类/接口, 继承, 自动加载,等等), 让更多的PHP扩展开发者可以借鉴.

最后, 考虑到目前有很多PHP框架, 而这些框架中也有很多很优秀的代表, 比如Zend Framework(因为Yaf是依照Zf来的, 所有特指一下). 这些框架, 运用了很多PHP5以后的新技术, 那么, 如果用扩展写一个类似于她们的框架, 除了能达到我之前想要的扩展教程的目标, 又能很大程度上解决, 框架的性能问题..

至于, 为什么叫Yaf, 是我实在想不到更好的名字了, 就借鉴了Yacc的命名方法, 取名为(yet another framework)

注意, 目前Yaf2.0已经开发完成, 完全新的体系架构和设计. 经过系统的测试, 并且已经在公司多条产品线应用. 请大家暂停使用1.0, 2.0会在文档准备充足后放出.

18 Aug 10 将PHP Manual融入(g)Vim

首先说个题外话: Vim发布7.3了..

在翻看Vim插件的时候, 发现了一个比较有意思的应用(非插件): 把PHP的手册融如Vim中, 在Vim中, 按”K”, 就可以跳转到光标下函数的手册说明…

30 Jul 10 注意PHP对字符串的递增运算

有同学问了一个问题:

<?php
for($i = 'A'; $i <= 'Z'; $i++) {
    echo $i;
}

输出是啥?

说个题外话: Blog现在支持订阅评论了, 同学们有提问以后等我回答的, 可以在留言提问的时候, 选择:Notify me of followup comments via e-mail

26 Jul 10 PHP运算符优先级的一个例外

今天在老王的技术手册看到一个问题:

<?php
if ($a = 100 && $b = 200) {
	var_dump($a, $b);
}

输出是什么?

这个问题, 咋一看或许觉得简单, 但其实仔细推敲并不简单.

21 Jun 10 PHP调试技术手册发布(1.0.0 pdf)

黑夜路人前段时间, 本着分享/总结的精神, 计划要总结下PHP常用的调试技术, 就一些问题找到了我..

如今第一版的PHP调试技术手册已经发布.

冠以我名, 我甚感惶恐, 只能一并赞下小黑的nice了~

下载地址: http://heiyeluren-doc.googlecode.com/files/PHP-Debug-Manual-public.pdf

20 Jun 10 深入理解PHP之匿名函数

PHP中, 传递Callback的方式, 一直很丑陋. 在PHP5.3以前, 我们只有俩种选择:

1. 字符串的函数名
2. 使用create_function的返回值

在PHP5.3以后, 我们多了一个选择, 也就是Closure,

$func = function () { ... };
array_walk($arr, $func);

28 May 10 PHP错误抑制符(@)导致引用传参失败的Bug

今天cici网友发来一个问题, 说是在函数调用参数前面使用错误抑制符号(@)的时候, 貌似引用传参就失效了. 他想让我帮他解答为什么.

看下面的例子:

.....

这个问题, 我之前没有遇到过, 所以首先去找找相关资料, 看看有没有现成的答案, Goolge了一番, 发现虽然有人已经向PHP报了类似的Bug:http://bugs.php.net/bug.php?id=47623, 但PHP官方还没有解决, 也没有给出答复.

没办法, 只能自己分析了…

Pages:  1 2 3 4 5 6 7 8 ...12 13 14