本地Service browser中调试amfphp注意一则
注意关闭本地web服务器的keepalive功能,否则可能会出现刚刚修改的代码要隔断时间才能失效的问题。目前只在apache环境下发现这个问题。
注意关闭本地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