Press "Enter" to skip to content

[转载]技术文化和惨淡命运 —— 怀念中国雅虎

很早就想写这么一篇文章了。我离开中国雅虎已经一年有余,在中国雅虎工作的那段时光是我最珍贵的回忆之一,和以前的同事吃饭聊天的时候也经常会怀念一下中国雅虎,怀念得多了,就觉得不如写篇文章好好回顾一下。很多事情虽然已经过去,但有些话不说出来,到底意难平。
转载说明 :我的紫色情结. --作者是我以前小组的同事

Filed in 转载, 随笔
with 40 Comments

Mpass - PHP做Socket服务的解决方案

一般很少有用PHP做服务的, 但是如果你的已有业务逻辑都是PHP实现的, 而现在却需要基于已有的业务逻辑提供一套Socket服务, 怎么办?
当然, 解决方法很多, 但最简单的办法, 还是直接使用PHP做Socket服务.
而这样做要解决的问题有很多, 主要要解决的问题有如下几个:

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

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

Filed in PHP应用
with 31 Comments

AllowEncodedSlashes in Apache

对于Apache来说, 如果URL和PATH_INFO中出现%2f(/)或者%5c(\), 会被认为这是个不合法的请求, Apache将会直接返回404结束.
对于使用mod_rewrite做URL改写的情况来说, 可能会比较容易遇到这个问题.
解决的办法有两种.

1. 进行俩次encode, /变为%252f
2. 在apache的配置中增加: AllowEncodedSlashes On

具体可以参看:http://httpd.apache.org/docs/2.2/mod/core.html#allowencodedslashes

Filed in 随笔
with 3 Comments

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.

Filed in PHP源码分析
with 12 Comments

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

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

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

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

Filed in PHP应用, PHP源码分析, 随笔
with 54 Comments