从rabbit_sup模块开始看起:
rabbit_sup模块的start_link是被rabbit app模块的start/2方法所调用的
rabbit.erl文件:
start(normal, []) ->
{ok, SupPid} = rabbit_sup:start_link(),
rabbit_sup.erl文件:
-define(SERVER, ?MODULE).
start_link() ->
supervisor:start_link({local, ?SERVER}, ?MODULE, []).
这里的?SERVER和?MODULE是一样的值,都为rabbit_sup 。 继续阅读 »
这几天折腾了一下Windows7,总体的感觉不错。从体验上来说,各方面的设置都和XP类似,即使是有变化也是过渡的非常平稳。唯一感觉不太好的是Windows7的画面感觉不太舒服,看起来非常的累,我的显卡是蓝宝4830的,应该不是卡的问题,舍友安装后也觉得电影的画面看起来有格子的感觉,可能是驱动的问题。
可能是因为我刚换的4核CPU,感觉windows7的操作似乎比xp还要流畅。
注意关闭本地web服务器的keepalive功能,否则可能会出现刚刚修改的代码要隔断时间才能失效的问题。目前只在apache环境下发现这个问题。
跟踪了一下PHP中$_GET、$_POST的产生过程,发现通过zend提供的函数和宏可以很方便注册自己的全局数组。相关的函数和宏:
END_API int zend_register_auto_global(
char *name, //全局数组名
uint name_len, //数组名称长度- 1
zend_auto_global_callback auto_global_callback TSRMLS_DC //数组初始化回调函数
);
#define ZEND_SET_SYMBOL(symtable, name, var) \
{ \
char *_name = (name); \
\
ZEND_SET_SYMBOL_WITH_LENGTH(symtable, _name, strlen(_name)+1, var, 1, 0); \
}
下面来注册我们的全局变量,假设我们的扩展名为test,我们在MINIT中进行注册操作。
zend_bool ming_global_callback(char *name, uint name_len TSRMLS_DC)
{
zval *tmp;
MAKE_STD_ZVAL(tmp);
array_init(tmp);
add_next_index_long(tmp,2222);
ZEND_SET_SYMBOL(&EG(symbol_table), name, tmp);
}
PHP_MINIT_FUNCTION(test)
{
/* If you have INI entries, uncomment these lines
REGISTER_INI_ENTRIES();
*/
zend_register_auto_global("_MING", sizeof("_MING") - 1, ming_global_callback TSRMLS_DC);
return SUCCESS;
}
运行PHP代码
<?php
var_dump($_MING);
结果:
array(1) {
[0]=>
int(2222)
}
简单的解决办法:删除PHP文件夹下的php.ini
从PHP的zval结构体可以看出PHP使用HashTable来保存数组信息,PHP的HashTable使用了一些技巧,这些技巧是PHP高效数组操作的直接原因,源代码在PHP源代码目录的Zend/zend_hash.h Zend/zend_hash.c 中。先来看看Zend HashTable的定义:
.png)
继续阅读 »