Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
SkyAPM
SkyAPM-php-sdk
提交
844932a3
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,发现更多精彩内容 >>
提交
844932a3
编写于
12月 28, 2018
作者:
H
heyanlong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
rewrite curl_exec
上级
7396029a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
143 addition
and
195 deletion
+143
-195
sky-php7ext/php_skywalking.h
sky-php7ext/php_skywalking.h
+1
-0
sky-php7ext/skywalking.c
sky-php7ext/skywalking.c
+142
-195
未找到文件。
sky-php7ext/php_skywalking.h
浏览文件 @
844932a3
...
@@ -152,6 +152,7 @@ ZEND_BEGIN_MODULE_GLOBALS(skywalking)
...
@@ -152,6 +152,7 @@ ZEND_BEGIN_MODULE_GLOBALS(skywalking)
zval
UpstreamSegment
;
zval
UpstreamSegment
;
zval
context
;
zval
context
;
zval
curl_header
;
zval
curl_header
;
zval
curl_header_send
;
int
version
;
int
version
;
ZEND_END_MODULE_GLOBALS
(
skywalking
)
ZEND_END_MODULE_GLOBALS
(
skywalking
)
...
...
sky-php7ext/skywalking.c
浏览文件 @
844932a3
...
@@ -118,6 +118,7 @@ void sky_curl_exec_handler(INTERNAL_FUNCTION_PARAMETERS)
...
@@ -118,6 +118,7 @@ void sky_curl_exec_handler(INTERNAL_FUNCTION_PARAMETERS)
return
;
return
;
}
}
int
is_send
=
1
;
zval
function_name
,
curlInfo
;
zval
function_name
,
curlInfo
;
zval
params
[
1
];
zval
params
[
1
];
...
@@ -131,169 +132,156 @@ void sky_curl_exec_handler(INTERNAL_FUNCTION_PARAMETERS)
...
@@ -131,169 +132,156 @@ void sky_curl_exec_handler(INTERNAL_FUNCTION_PARAMETERS)
char
*
url_str
=
Z_STRVAL_P
(
z_url
);
char
*
url_str
=
Z_STRVAL_P
(
z_url
);
if
(
strlen
(
url_str
)
<=
0
)
{
if
(
strlen
(
url_str
)
<=
0
)
{
zval_dtor
(
&
curlInfo
);
zval_dtor
(
&
curlInfo
);
RETURN_FALSE
;
is_send
=
0
;
}
}
php_url
*
url_info
=
NULL
;
php_url
*
url_info
=
NULL
;
url_info
=
php_url_parse
(
url_str
);
if
(
is_send
==
1
)
{
if
(
url_info
->
scheme
==
NULL
)
{
url_info
=
php_url_parse
(
url_str
);
char
*
new_url_info
=
(
char
*
)
emalloc
(
sizeof
(
url_str
)
+
7
);
if
(
url_info
->
scheme
==
NULL
||
url_info
->
host
==
NULL
)
{
char
*
pre
=
NULL
;
zval_dtor
(
&
curlInfo
);
if
(
url_info
->
host
==
NULL
)
{
php_url_free
(
url_info
);
if
(
strncasecmp
(
"://"
,
url_str
,
3
)
==
0
)
{
is_send
=
0
;
pre
=
"http"
;
}
else
{
pre
=
"http://"
;
}
}
else
{
pre
=
"http:"
;
}
}
strcpy
(
new_url_info
,
pre
);
strcat
(
new_url_info
,
url_str
);
php_url_free
(
url_info
);
url_info
=
php_url_parse
(
new_url_info
);
efree
(
new_url_info
);
}
}
char
*
sw3
=
NULL
;
zval
*
spans
=
NULL
;
zval
*
last_span
=
NULL
;
zval
*
span_id
=
NULL
;
smart_str
peer
=
{
0
};
smart_str
peer
=
{
0
};
smart_str
operation_name
=
{
0
};
smart_str
operation_name
=
{
0
};
if
(
is_send
==
1
)
{
int
peer_port
=
0
;
if
(
url_info
->
port
)
{
peer_port
=
url_info
->
port
;
}
if
(
peer_port
>
0
)
{
smart_str_append_printf
(
&
peer
,
"%s:%d"
,
url_info
->
host
,
peer_port
);
}
else
{
if
(
strcasecmp
(
"http"
,
url_info
->
scheme
)
==
0
)
{
smart_str_append_printf
(
&
peer
,
"%s:%d"
,
url_info
->
host
,
80
);
}
else
{
smart_str_append_printf
(
&
peer
,
"%s:%d"
,
url_info
->
host
,
443
);
}
}
smart_str_0
(
&
peer
);
int
peer_port
=
0
;
if
(
url_info
->
query
)
{
if
(
url_info
->
port
){
if
(
url_info
->
path
==
NULL
)
{
peer_port
=
url_info
->
port
;
smart_str_append_printf
(
&
operation_name
,
"%s?%s"
,
"/"
,
url_info
->
query
);
}
}
else
{
if
(
peer_port
>
0
)
{
smart_str_append_printf
(
&
operation_name
,
"%s?%s"
,
url_info
->
path
,
url_info
->
query
);
smart_str_append_printf
(
&
peer
,
"%s:%d"
,
url_info
->
host
,
peer_port
);
}
}
else
{
if
(
strcasecmp
(
"http"
,
url_info
->
scheme
)
==
0
)
{
smart_str_append_printf
(
&
peer
,
"%s:%d"
,
url_info
->
host
,
80
);
}
else
{
}
else
{
smart_str_append_printf
(
&
peer
,
"%s:%d"
,
url_info
->
host
,
443
);
if
(
url_info
->
path
==
NULL
)
{
smart_str_append_printf
(
&
operation_name
,
"%s"
,
"/"
);
}
else
{
smart_str_append_printf
(
&
operation_name
,
"%s"
,
url_info
->
path
);
}
}
}
smart_str_0
(
&
operation_name
);
spans
=
get_spans
();
last_span
=
zend_hash_index_find
(
Z_ARRVAL_P
(
spans
),
zend_hash_num_elements
(
Z_ARRVAL_P
(
spans
))
-
1
);
span_id
=
zend_hash_str_find
(
Z_ARRVAL_P
(
last_span
),
"spanId"
,
sizeof
(
"spanId"
)
-
1
);
sw3
=
generate_sw3
(
Z_LVAL_P
(
span_id
)
+
1
,
ZSTR_VAL
(
peer
.
s
),
ZSTR_VAL
(
operation_name
.
s
));
}
}
smart_str_0
(
&
peer
);
if
(
url_info
->
query
)
{
if
(
url_info
->
path
==
NULL
)
{
if
(
sw3
!=
NULL
)
{
smart_str_append_printf
(
&
operation_name
,
"%s?%s"
,
"/"
,
url_info
->
query
);
zval
*
option
=
NULL
;
}
else
{
int
is_init
=
0
;
smart_str_append_printf
(
&
operation_name
,
"%s?%s"
,
url_info
->
path
,
url_info
->
query
);
option
=
zend_hash_index_find
(
Z_ARRVAL_P
(
&
SKYWALKING_G
(
curl_header
)),
Z_RES_HANDLE_P
(
zid
));
if
(
option
==
NULL
)
{
option
=
emalloc
(
sizeof
(
zval
));
bzero
(
option
,
sizeof
(
zval
));
array_init
(
option
);
is_init
=
1
;
}
}
}
else
{
if
(
url_info
->
path
==
NULL
)
{
add_next_index_string
(
option
,
sw3
);
smart_str_append_printf
(
&
operation_name
,
"%s"
,
"/"
);
add_index_bool
(
&
SKYWALKING_G
(
curl_header_send
),
(
zend_ulong
)
Z_RES_HANDLE_P
(
zid
),
IS_TRUE
);
}
else
{
smart_str_append_printf
(
&
operation_name
,
"%s"
,
url_info
->
path
);
zval
func
;
zval
argv
[
3
];
zval
ret
;
ZVAL_STRING
(
&
func
,
"curl_setopt"
);
ZVAL_COPY
(
&
argv
[
0
],
zid
);
ZVAL_LONG
(
&
argv
[
1
],
CURLOPT_HTTPHEADER
);
ZVAL_COPY
(
&
argv
[
2
],
option
);
call_user_function
(
CG
(
function_table
),
NULL
,
&
func
,
&
ret
,
3
,
argv
);
zval_dtor
(
&
ret
);
zval_dtor
(
&
func
);
if
(
is_init
==
1
)
{
zval_ptr_dtor
(
option
);
efree
(
option
);
}
}
zval_dtor
(
&
argv
[
0
]);
zval_dtor
(
&
argv
[
1
]);
zval_dtor
(
&
argv
[
2
]);
}
}
smart_str_0
(
&
operation_name
);
zval
*
spans
=
get_spans
();
zval
*
last_span
=
zend_hash_index_find
(
Z_ARRVAL_P
(
spans
),
zend_hash_num_elements
(
Z_ARRVAL_P
(
spans
))
-
1
);
zval
*
span_id
=
zend_hash_str_find
(
Z_ARRVAL_P
(
last_span
),
"spanId"
,
sizeof
(
"spanId"
)
-
1
);
zval
temp
;
zval
temp
;
array_init
(
&
temp
);
add_assoc_long
(
&
temp
,
"spanId"
,
Z_LVAL_P
(
span_id
)
+
1
);
add_assoc_long
(
&
temp
,
"parentSpanId"
,
0
);
char
*
l_millisecond
;
char
*
l_millisecond
;
l_millisecond
=
get_millisecond
();
long
millisecond
;
long
millisecond
;
millisecond
=
zend_atol
(
l_millisecond
,
strlen
(
l_millisecond
));
if
(
is_send
==
1
)
{
efree
(
l_millisecond
);
add_assoc_long
(
&
temp
,
"startTime"
,
millisecond
);
add_assoc_long
(
&
temp
,
"spanType"
,
1
);
add_assoc_long
(
&
temp
,
"spanLayer"
,
3
);
add_assoc_long
(
&
temp
,
"componentId"
,
COMPONENT_HTTPCLIENT
);
char
*
sw3
=
generate_sw3
(
Z_LVAL_P
(
span_id
)
+
1
,
ZSTR_VAL
(
peer
.
s
),
ZSTR_VAL
(
operation_name
.
s
));
array_init
(
&
temp
);
if
(
sw3
!=
NULL
)
{
zval
opt
;
array_init
(
&
opt
);
add_next_index_string
(
&
opt
,
sw3
);
// //send setopt header
zend_ulong
key
=
(
zend_ulong
)
Z_RES_VAL_P
(
zid
);
zval
*
current_header
=
zend_hash_index_find
(
Z_ARRVAL_P
(
&
SKYWALKING_G
(
curl_header
)),
key
);
if
(
current_header
==
NULL
)
{
zval
_temp
;
array_init
(
&
_temp
);
add_assoc_long
(
&
_temp
,
"exec_call"
,
1
);
add_assoc_zval
(
&
_temp
,
"header"
,
&
opt
);
zend_hash_index_add
(
Z_ARRVAL_P
(
&
SKYWALKING_G
(
curl_header
)),
key
,
&
_temp
);
}
else
{
zend_long
_key
;
zval
*
_value
;
zval
exec_send
;
ZVAL_LONG
(
&
exec_send
,
1
);
zend_hash_str_update
(
Z_ARRVAL_P
(
current_header
),
"exec_call"
,
sizeof
(
"exec_call"
)
-
1
,
&
exec_send
);
zval_dtor
(
&
exec_send
);
zval
*
header_entry
=
zend_hash_str_find
(
Z_ARRVAL_P
(
current_header
),
"header"
,
sizeof
(
"header"
)
-
1
);
ZEND_HASH_FOREACH_NUM_KEY_VAL
(
Z_ARRVAL_P
(
header_entry
),
_key
,
_value
)
{
add_next_index_string
(
&
opt
,
Z_STRVAL_P
(
_value
));
}
ZEND_HASH_FOREACH_END
();
}
zval
f_name
,
p
[
3
];
add_assoc_long
(
&
temp
,
"spanId"
,
Z_LVAL_P
(
span_id
)
+
1
);
ZVAL_COPY
(
&
p
[
0
],
zid
);
add_assoc_long
(
&
temp
,
"parentSpanId"
,
0
);
ZVAL_LONG
(
&
p
[
1
],
CURLOPT_HTTPHEADER
);
l_millisecond
=
get_millisecond
();
ZVAL_COPY
(
&
p
[
2
],
&
opt
);
millisecond
=
zend_atol
(
l_millisecond
,
strlen
(
l_millisecond
));
if
(
current_header
!=
NULL
)
{
efree
(
l_millisecond
);
zval_dtor
(
&
opt
);
add_assoc_long
(
&
temp
,
"startTime"
,
millisecond
);
}
add_assoc_long
(
&
temp
,
"spanType"
,
1
);
ZVAL_STRING
(
&
f_name
,
"curl_setopt"
);
add_assoc_long
(
&
temp
,
"spanLayer"
,
3
);
zval
return_function_value
;
add_assoc_long
(
&
temp
,
"componentId"
,
COMPONENT_HTTPCLIENT
);
call_user_function
(
CG
(
function_table
),
NULL
,
&
f_name
,
&
return_function_value
,
3
,
p
);
zval_dtor
(
&
return_function_value
);
zval_dtor
(
&
f_name
);
zval_dtor
(
&
p
[
0
]);
zval_dtor
(
&
p
[
1
]);
zval_dtor
(
&
p
[
2
]);
}
}
orig_curl_exec
(
INTERNAL_FUNCTION_PARAM_PASSTHRU
);
zval
function_name_1
,
curlInfo_1
;
orig_curl_exec
(
INTERNAL_FUNCTION_PARAM_PASSTHRU
);
zval
params_1
[
1
];
ZVAL_COPY
(
&
params_1
[
0
],
zid
);
ZVAL_STRING
(
&
function_name_1
,
"curl_getinfo"
);
call_user_function
(
CG
(
function_table
),
NULL
,
&
function_name_1
,
&
curlInfo_1
,
1
,
params_1
);
zval_dtor
(
&
params_1
[
0
]);
zval_dtor
(
&
function_name_1
);
zval
*
z_http_code
;
if
(
is_send
==
1
)
{
l_millisecond
=
get_millisecond
();
zval
function_name_1
,
curlInfo_1
;
millisecond
=
zend_atol
(
l_millisecond
,
strlen
(
l_millisecond
));
zval
params_1
[
1
];
efree
(
l_millisecond
);
ZVAL_COPY
(
&
params_1
[
0
],
zid
);
ZVAL_STRING
(
&
function_name_1
,
"curl_getinfo"
);
call_user_function
(
CG
(
function_table
),
NULL
,
&
function_name_1
,
&
curlInfo_1
,
1
,
params_1
);
zval_dtor
(
&
params_1
[
0
]);
zval_dtor
(
&
function_name_1
);
z_http_code
=
zend_hash_str_find
(
Z_ARRVAL
(
curlInfo_1
),
ZEND_STRL
(
"http_code"
));
zval
*
z_http_code
;
l_millisecond
=
get_millisecond
();
millisecond
=
zend_atol
(
l_millisecond
,
strlen
(
l_millisecond
));
efree
(
l_millisecond
);
add_assoc_long
(
&
temp
,
"endTime"
,
millisecond
);
z_http_code
=
zend_hash_str_find
(
Z_ARRVAL
(
curlInfo_1
),
ZEND_STRL
(
"http_code"
)
);
add_assoc_long
(
&
temp
,
"endTime"
,
millisecond
);
add_assoc_string
(
&
temp
,
"operationName"
,
ZSTR_VAL
(
operation_name
.
s
));
add_assoc_string
(
&
temp
,
"peer"
,
ZSTR_VAL
(
peer
.
s
));
smart_str_free
(
&
peer
);
smart_str_free
(
&
operation_name
);
php_url_free
(
url_info
);
add_assoc_string
(
&
temp
,
"operationName"
,
ZSTR_VAL
(
operation_name
.
s
));
add_assoc_string
(
&
temp
,
"peer"
,
ZSTR_VAL
(
peer
.
s
));
smart_str_free
(
&
peer
);
smart_str_free
(
&
operation_name
);
if
(
Z_LVAL_P
(
z_http_code
)
!=
200
){
php_url_free
(
url_info
);
add_assoc_long
(
&
temp
,
"isError"
,
1
);
}
else
{
if
(
Z_LVAL_P
(
z_http_code
)
!=
200
)
{
add_assoc_long
(
&
temp
,
"isError"
,
0
);
add_assoc_long
(
&
temp
,
"isError"
,
1
);
}
}
else
{
zval
_refs
;
add_assoc_long
(
&
temp
,
"isError"
,
0
);
array_init
(
&
_refs
);
}
add_assoc_zval
(
&
temp
,
"refs"
,
&
_refs
);
zval
_refs
;
zend_hash_next_index_insert
(
Z_ARRVAL_P
(
spans
),
&
temp
);
array_init
(
&
_refs
);
zval_dtor
(
&
curlInfo_1
);
add_assoc_zval
(
&
temp
,
"refs"
,
&
_refs
);
zval_dtor
(
&
curlInfo
);
zend_hash_next_index_insert
(
Z_ARRVAL_P
(
spans
),
&
temp
);
zval_dtor
(
&
curlInfo_1
);
zval_dtor
(
&
curlInfo
);
}
}
}
void
sky_curl_setopt_handler
(
INTERNAL_FUNCTION_PARAMETERS
)
{
void
sky_curl_setopt_handler
(
INTERNAL_FUNCTION_PARAMETERS
)
{
...
@@ -304,42 +292,19 @@ void sky_curl_setopt_handler(INTERNAL_FUNCTION_PARAMETERS) {
...
@@ -304,42 +292,19 @@ void sky_curl_setopt_handler(INTERNAL_FUNCTION_PARAMETERS) {
return
;
return
;
}
}
if
(
CURLOPT_HTTPHEADER
==
options
)
{
zval
*
is_send
=
zend_hash_index_find
(
Z_ARRVAL_P
(
&
SKYWALKING_G
(
curl_header_send
)),
Z_RES_HANDLE_P
(
zid
));
if
(
Z_TYPE_P
(
zvalue
)
!=
IS_ARRAY
)
{
//
return
;
if
(
is_send
!=
NULL
&&
CURLOPT_HTTPHEADER
==
options
&&
Z_TYPE_P
(
is_send
)
==
IS_TRUE
)
{
}
add_index_bool
(
&
SKYWALKING_G
(
curl_header_send
),
Z_RES_HANDLE_P
(
zid
),
IS_FALSE
);
orig_curl_setopt
(
INTERNAL_FUNCTION_PARAM_PASSTHRU
);
zend_long
_key
;
}
else
{
zval
*
_value
;
if
(
CURLOPT_HTTPHEADER
==
options
&&
Z_TYPE_P
(
zvalue
)
==
IS_ARRAY
)
{
zval
header
;
zval
copy_header
;
array_init
(
&
header
);
ZVAL_DUP
(
&
copy_header
,
zvalue
);
ZEND_HASH_FOREACH_NUM_KEY_VAL
(
Z_ARRVAL_P
(
zvalue
),
_key
,
_value
)
add_index_zval
(
&
SKYWALKING_G
(
curl_header
),
Z_RES_HANDLE_P
(
zid
),
&
copy_header
);
{
add_next_index_string
(
&
header
,
Z_STRVAL_P
(
_value
));
}
ZEND_HASH_FOREACH_END
();
zend_ulong
key
=
(
zend_ulong
)
Z_RES_VAL_P
(
zid
);
zval
*
current_header
=
zend_hash_index_find
(
Z_ARRVAL_P
(
&
SKYWALKING_G
(
curl_header
)),
key
);
if
(
current_header
==
NULL
)
{
zval
temp
;
array_init
(
&
temp
);
add_assoc_long
(
&
temp
,
"exec_call"
,
0
);
add_assoc_zval
(
&
temp
,
"header"
,
&
header
);
zend_hash_index_add
(
Z_ARRVAL_P
(
&
SKYWALKING_G
(
curl_header
)),
key
,
&
temp
);
}
else
{
}
else
{
zval
*
exec_call
=
zend_hash_str_find
(
Z_ARRVAL_P
(
current_header
),
"exec_call"
,
sizeof
(
"exec_call"
)
-
1
);
orig_curl_setopt
(
INTERNAL_FUNCTION_PARAM_PASSTHRU
);
if
(
Z_LVAL_P
(
exec_call
)
==
1
)
{
zval_dtor
(
&
header
);
orig_curl_setopt
(
INTERNAL_FUNCTION_PARAM_PASSTHRU
);
}
else
{
zend_string
*
_header
=
zend_string_init
(
"header"
,
sizeof
(
"header"
)
-
1
,
0
);
zend_hash_update
(
Z_ARRVAL_P
(
current_header
),
_header
,
&
header
);
zend_string_release
(
_header
);
}
}
}
}
else
{
orig_curl_setopt
(
INTERNAL_FUNCTION_PARAM_PASSTHRU
);
}
}
}
}
...
@@ -353,31 +318,12 @@ void sky_curl_setopt_array_handler(INTERNAL_FUNCTION_PARAMETERS) {
...
@@ -353,31 +318,12 @@ void sky_curl_setopt_array_handler(INTERNAL_FUNCTION_PARAMETERS) {
Z_PARAM_ARRAY
(
arr
)
Z_PARAM_ARRAY
(
arr
)
ZEND_PARSE_PARAMETERS_END
();
ZEND_PARSE_PARAMETERS_END
();
zend_ulong
key
=
(
zend_ulong
)
Z_RES_VAL_P
(
zid
);
zval
*
http_header
=
zend_hash_index_find
(
Z_ARRVAL_P
(
arr
),
CURLOPT_HTTPHEADER
);
zval
*
current_header
=
zend_hash_index_find
(
Z_ARRVAL_P
(
&
SKYWALKING_G
(
curl_header
)),
key
);
if
(
http_header
!=
NULL
)
{
zval
*
header_opt
=
zend_hash_index_find
(
Z_ARRVAL_P
(
arr
),
CURLOPT_HTTPHEADER
);
zval
copy_header
;
ZVAL_DUP
(
&
copy_header
,
http_header
);
if
(
header_opt
!=
NULL
)
{
add_index_zval
(
&
SKYWALKING_G
(
curl_header
),
Z_RES_HANDLE_P
(
zid
),
&
copy_header
);
zend_long
_key
;
zval
*
_value
;
zval
header
;
array_init
(
&
header
);
ZEND_HASH_FOREACH_NUM_KEY_VAL
(
Z_ARRVAL_P
(
header_opt
),
_key
,
_value
)
{
add_next_index_string
(
&
header
,
Z_STRVAL_P
(
_value
));
}
ZEND_HASH_FOREACH_END
();
if
(
current_header
==
NULL
)
{
zval
temp
;
array_init
(
&
temp
);
add_assoc_long
(
&
temp
,
"exec_call"
,
0
);
add_assoc_zval
(
&
temp
,
"header"
,
&
header
);
zend_hash_index_add
(
Z_ARRVAL_P
(
&
SKYWALKING_G
(
curl_header
)),
key
,
&
temp
);
}
else
{
zend_string
*
_header
=
zend_string_init
(
"header"
,
sizeof
(
"header"
)
-
1
,
0
);
zend_hash_update
(
Z_ARRVAL_P
(
current_header
),
_header
,
&
header
);
zend_string_release
(
_header
);
}
}
}
orig_curl_setopt_array
(
INTERNAL_FUNCTION_PARAM_PASSTHRU
);
orig_curl_setopt_array
(
INTERNAL_FUNCTION_PARAM_PASSTHRU
);
...
@@ -390,10 +336,9 @@ void sky_curl_close_handler(INTERNAL_FUNCTION_PARAMETERS) {
...
@@ -390,10 +336,9 @@ void sky_curl_close_handler(INTERNAL_FUNCTION_PARAMETERS) {
return
;
return
;
}
}
zend_ulong
key
=
(
zend_ulong
)
Z_RES_VAL_P
(
zid
);
zval
*
http_header
=
zend_hash_index_find
(
Z_ARRVAL_P
(
&
SKYWALKING_G
(
curl_header
)),
Z_RES_HANDLE_P
(
zid
));
zval
*
current_header
=
zend_hash_index_find
(
Z_ARRVAL_P
(
&
SKYWALKING_G
(
curl_header
)),
key
);
if
(
http_header
!=
NULL
)
{
if
(
current_header
!=
NULL
)
{
zend_hash_index_del
(
Z_ARRVAL_P
(
&
SKYWALKING_G
(
curl_header
)),
Z_RES_HANDLE_P
(
zid
));
zend_hash_index_del
(
Z_ARRVAL_P
(
&
SKYWALKING_G
(
curl_header
)),
key
);
}
}
orig_curl_close
(
INTERNAL_FUNCTION_PARAM_PASSTHRU
);
orig_curl_close
(
INTERNAL_FUNCTION_PARAM_PASSTHRU
);
...
@@ -631,6 +576,7 @@ static char* _get_current_machine_ip(){
...
@@ -631,6 +576,7 @@ static char* _get_current_machine_ip(){
static
void
request_init
()
{
static
void
request_init
()
{
array_init
(
&
SKYWALKING_G
(
curl_header
));
array_init
(
&
SKYWALKING_G
(
curl_header
));
array_init
(
&
SKYWALKING_G
(
curl_header_send
));
array_init
(
&
SKYWALKING_G
(
context
));
array_init
(
&
SKYWALKING_G
(
context
));
array_init
(
&
SKYWALKING_G
(
UpstreamSegment
));
array_init
(
&
SKYWALKING_G
(
UpstreamSegment
));
...
@@ -879,6 +825,7 @@ PHP_RSHUTDOWN_FUNCTION(skywalking)
...
@@ -879,6 +825,7 @@ PHP_RSHUTDOWN_FUNCTION(skywalking)
sky_flush_all
();
sky_flush_all
();
zval_dtor
(
&
SKYWALKING_G
(
context
));
zval_dtor
(
&
SKYWALKING_G
(
context
));
zval_dtor
(
&
SKYWALKING_G
(
curl_header
));
zval_dtor
(
&
SKYWALKING_G
(
curl_header
));
zval_dtor
(
&
SKYWALKING_G
(
curl_header_send
));
zval_dtor
(
&
SKYWALKING_G
(
UpstreamSegment
));
zval_dtor
(
&
SKYWALKING_G
(
UpstreamSegment
));
}
}
return
SUCCESS
;
return
SUCCESS
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录