Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
SkyAPM
SkyAPM-php-sdk
提交
bcf44605
S
SkyAPM-php-sdk
项目概览
SkyAPM
/
SkyAPM-php-sdk
通知
14
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SkyAPM-php-sdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
bcf44605
编写于
12月 17, 2018
作者:
何
何延龙
提交者:
GitHub
12月 17, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #19 from heyanlong/master
merge headers
上级
c481778b
4dad0a97
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
53 addition
and
5 deletion
+53
-5
sky-php7ext/php_skywalking.h
sky-php7ext/php_skywalking.h
+2
-0
sky-php7ext/skywalking.c
sky-php7ext/skywalking.c
+51
-5
未找到文件。
sky-php7ext/php_skywalking.h
浏览文件 @
bcf44605
...
...
@@ -134,6 +134,7 @@ static zval *get_first_span();
static
zval
*
get_spans
();
static
char
*
_get_current_machine_ip
();
static
void
(
*
orig_curl_exec
)(
INTERNAL_FUNCTION_PARAMETERS
)
=
NULL
;
static
void
(
*
orig_curl_setopt
)(
INTERNAL_FUNCTION_PARAMETERS
)
=
NULL
;
/*
Declare any global variables you may need between the BEGIN
and END macros here:
...
...
@@ -145,6 +146,7 @@ ZEND_BEGIN_MODULE_GLOBALS(skywalking)
char
*
grpc
;
zval
UpstreamSegment
;
zval
context
;
zval
curl_header
;
int
version
;
ZEND_END_MODULE_GLOBALS
(
skywalking
)
...
...
sky-php7ext/skywalking.c
浏览文件 @
bcf44605
...
...
@@ -212,17 +212,32 @@ void sky_curl_exec_handler(INTERNAL_FUNCTION_PARAMETERS)
zend_string_release
(
_peer_host
);
zend_string_release
(
_op_name
);
if
(
sw3
!=
NULL
)
{
zval
z_sw3
;
array_init
(
&
z_sw3
);
zval
opt
;
array_init
(
&
opt
);
char
headers_string
[
500
];
sprintf
(
headers_string
,
"sw3: %s"
,
sw3
);
add_next_index_string
(
&
z_sw3
,
headers_string
);
// //send setopt header
zend_ulong
key
=
Z_RES_VAL_P
(
zid
);
zval
*
current_header
=
zend_hash_index_find
(
Z_ARRVAL_P
(
&
SKYWALKING_G
(
curl_header
)),
key
);
if
(
current_header
==
NULL
)
{
zend_hash_index_add
(
Z_ARRVAL_P
(
&
SKYWALKING_G
(
curl_header
)),
key
,
&
opt
);
add_next_index_string
(
&
opt
,
headers_string
);
}
else
{
zend_long
_key
;
zval
*
_value
;
add_next_index_string
(
&
opt
,
headers_string
);
ZEND_HASH_FOREACH_NUM_KEY_VAL
(
Z_ARRVAL_P
(
current_header
),
_key
,
_value
)
{
add_next_index_string
(
&
opt
,
Z_STRVAL_P
(
_value
));
}
ZEND_HASH_FOREACH_END
();
}
zval
f_name
,
p
[
3
];
ZVAL_COPY
(
&
p
[
0
],
zid
);
ZVAL_LONG
(
&
p
[
1
],
CURLOPT_HTTPHEADER
);
ZVAL_COPY
(
&
p
[
2
],
&
z_sw3
);
zval_dtor
(
&
z_sw3
);
ZVAL_COPY
(
&
p
[
2
],
&
opt
);
zval_dtor
(
&
opt
);
ZVAL_STRING
(
&
f_name
,
"curl_setopt"
);
zval
return_function_value
;
call_user_function
(
CG
(
function_table
),
NULL
,
&
f_name
,
&
return_function_value
,
3
,
p
);
...
...
@@ -273,6 +288,31 @@ void sky_curl_exec_handler(INTERNAL_FUNCTION_PARAMETERS)
zend_hash_next_index_insert
(
Z_ARRVAL_P
(
spans
),
&
temp
);
}
void
sky_curl_setopt_handler
(
INTERNAL_FUNCTION_PARAMETERS
)
{
zval
*
zid
,
*
zvalue
;
zend_long
options
;
if
(
zend_parse_parameters
(
ZEND_NUM_ARGS
(),
"rlz"
,
&
zid
,
&
options
,
&
zvalue
)
==
FAILURE
)
{
return
;
}
if
(
CURLOPT_HTTPHEADER
==
options
)
{
if
(
Z_TYPE_P
(
zvalue
)
!=
IS_ARRAY
){
return
;
}
zend_ulong
key
=
Z_RES_VAL_P
(
zid
);
zval
*
current_header
=
zend_hash_index_find
(
Z_ARRVAL_P
(
&
SKYWALKING_G
(
curl_header
)),
key
);
if
(
current_header
==
NULL
)
{
zend_hash_index_add
(
Z_ARRVAL_P
(
&
SKYWALKING_G
(
curl_header
)),
key
,
zvalue
);
}
else
{
orig_curl_setopt
(
INTERNAL_FUNCTION_PARAM_PASSTHRU
);
}
}
else
{
orig_curl_setopt
(
INTERNAL_FUNCTION_PARAM_PASSTHRU
);
}
}
/* {{{ php_skywalking_init_globals
*/
/* Uncomment this function if you have INI entries*/
...
...
@@ -501,6 +541,7 @@ static char* _get_current_machine_ip(){
static
void
request_init
()
{
array_init
(
&
SKYWALKING_G
(
curl_header
));
array_init
(
&
SKYWALKING_G
(
context
));
array_init
(
&
SKYWALKING_G
(
UpstreamSegment
));
...
...
@@ -685,6 +726,10 @@ PHP_MINIT_FUNCTION (skywalking) {
orig_curl_exec
=
old_function
->
internal_function
.
handler
;
old_function
->
internal_function
.
handler
=
sky_curl_exec_handler
;
}
if
((
old_function
=
zend_hash_str_find_ptr
(
CG
(
function_table
),
"curl_setopt"
,
sizeof
(
"curl_setopt"
)
-
1
))
!=
NULL
)
{
orig_curl_setopt
=
old_function
->
internal_function
.
handler
;
old_function
->
internal_function
.
handler
=
sky_curl_setopt_handler
;
}
}
return
SUCCESS
;
...
...
@@ -735,6 +780,7 @@ PHP_RSHUTDOWN_FUNCTION(skywalking)
}
sky_flush_all
();
zval_dtor
(
&
SKYWALKING_G
(
context
));
zval_dtor
(
&
SKYWALKING_G
(
curl_header
));
zval_dtor
(
&
SKYWALKING_G
(
UpstreamSegment
));
}
return
SUCCESS
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录