入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

php扩展接收参数问题

创建时间:2014-12-02 投稿人: 浏览次数:573
  double tmp_user_uin;
uint32_t area_id;
uint32_t type;
uint32_t begin_sec;
uint32_t begin_usec;
uint32_t num;
uint32_t game_id;
if ( zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "dlsllddddddd",&dopuin,&appid,&IP,&iplength,&PORT,&waitms,&tmp_user_uin,&area_id,&type,&begin_sec,&begin_usec,&num,&game_id ) == FAILURE )

sprintf(sErrMsg,"输入参数与接受参数不匹配");
add_assoc_string(return_value,"error",sErrMsg,1);
add_assoc_long(return_value,"errno",input_para_errno);
return;
}
uint64_t user_uin = (uint64_t) tmp_user_uin;
area_id = (uint32_t) area_id;
type = (uint32_t) type;
begin_sec = (uint32_t) begin_sec;
begin_usec = (uint32_t) begin_usec;
num = (uint32_t) num;
game_id = (uint32_t) game_id; 


这段代码,你会发现 user_uin 会失真。拿到的uin和输入到php扩展里面的uin是不一样的。 改成下面的就ok了:
double tmp_user_uin;
uint32_t area_id;
uint32_t type;
uint32_t begin_sec;
uint32_t begin_usec;
uint32_t num;
uint32_t game_id;
if ( zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "dlslldllllll",&dopuin,&appid,&IP,&iplength,&PORT,&waitms,&tmp_user_uin,&area_id,&type,&begin_sec,&begin_usec,&num,&game_id ) == FAILURE )

sprintf(sErrMsg,"输入参数与接受参数不匹配");
add_assoc_string(return_value,"error",sErrMsg,1);
add_assoc_long(return_value,"errno",input_para_errno);
return;
}
uint64_t user_uin = (uint64_t) tmp_user_uin;
area_id = (uint32_t) area_id;
type = (uint32_t) type;
begin_sec = (uint32_t) begin_sec;
begin_usec = (uint32_t) begin_usec;
num = (uint32_t) num;
game_id = (uint32_t) game_id; 


说明: php扩展在接受参数的时候是有参数间的影响的。

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像