Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
SkyAPM
SkyAPM-php-sdk
提交
33b698b4
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,体验更适合开发者的 AI 搜索 >>
提交
33b698b4
编写于
6月 28, 2019
作者:
H
heyanlong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
pdo
上级
c1437566
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
40 addition
and
15 deletion
+40
-15
skywalking.c
skywalking.c
+40
-15
未找到文件。
skywalking.c
浏览文件 @
33b698b4
...
...
@@ -131,45 +131,70 @@ ZEND_API void sky_execute_internal(zend_execute_data *execute_data, zval *return
||
strcmp
(
function_name
,
"query"
)
==
0
||
strcmp
(
function_name
,
"prepare"
)
==
0
||
strcmp
(
function_name
,
"commit"
)
==
0
)
{
component
=
(
char
*
)
emalloc
(
strlen
(
"PDO"
)
+
1
);
component
=
(
char
*
)
emalloc
(
strlen
(
"PDO"
)
+
1
);
strcpy
(
component
,
"PDO"
);
operationName
=
(
char
*
)
emalloc
(
strlen
(
class_name
)
+
strlen
(
function_name
)
+
3
);
operationName
=
(
char
*
)
emalloc
(
strlen
(
class_name
)
+
strlen
(
function_name
)
+
3
);
strcpy
(
operationName
,
class_name
);
strcat
(
operationName
,
"->"
);
strcat
(
operationName
,
function_name
);
}
}
else
if
(
strcmp
(
class_name
,
"PDOStatement"
)
==
0
)
{
if
(
strcmp
(
function_name
,
"execute"
)
==
0
)
{
component
=
(
char
*
)
emalloc
(
strlen
(
"PDOStatement"
)
+
1
);
strcpy
(
component
,
"PDOStatement"
);
operationName
=
(
char
*
)
emalloc
(
strlen
(
class_name
)
+
strlen
(
function_name
)
+
3
);
strcpy
(
operationName
,
class_name
);
strcat
(
operationName
,
"->"
);
strcat
(
operationName
,
function_name
);
}
}
}
else
if
(
function_name
!=
NULL
)
{
}
if
(
operationName
!=
NULL
)
{
zval
tags
;
array_init
(
&
tags
);
// params
uint32_t
arg_count
=
ZEND_CALL_NUM_ARGS
(
execute_data
);
if
(
arg_count
)
{
zval
*
p
=
ZEND_CALL_ARG
(
execute_data
,
1
);
//db.statement
switch
(
Z_TYPE_P
(
p
))
{
case
IS_STRING
:
add_assoc_string
(
&
tags
,
"db.statement"
,
Z_STRVAL_P
(
p
));
if
(
strcmp
(
class_name
,
"PDO"
)
==
0
)
{
// params
uint32_t
arg_count
=
ZEND_CALL_NUM_ARGS
(
execute_data
);
if
(
arg_count
)
{
zval
*
p
=
ZEND_CALL_ARG
(
execute_data
,
1
);
//db.statement
switch
(
Z_TYPE_P
(
p
))
{
case
IS_STRING
:
add_assoc_string
(
&
tags
,
"db.statement"
,
Z_STRVAL_P
(
p
));
}
}
}
if
(
strcmp
(
class_name
,
"PDO"
)
==
0
)
{
char
db_type
[
64
]
=
{
0
};
pdo_dbh_t
*
dbh
=
Z_PDO_DBH_P
(
&
(
execute_data
->
This
));
if
(
dbh
!=
NULL
)
{
if
(
dbh
->
driver
!=
NULL
&&
dbh
->
driver
->
driver_name
!=
NULL
)
{
memcpy
(
db_type
,
(
char
*
)
dbh
->
driver
->
driver_name
,
dbh
->
driver
->
driver_name_len
);
memcpy
(
db_type
,
(
char
*
)
dbh
->
driver
->
driver_name
,
dbh
->
driver
->
driver_name_len
);
add_assoc_string
(
&
tags
,
"db.type"
,
db_type
);
}
if
(
dbh
->
data_source
!=
NULL
&&
db_type
[
0
]
!=
'\0'
)
{
add_assoc_string
(
&
tags
,
"db.data_source"
,
dbh
->
data_source
);
add_assoc_string
(
&
tags
,
"db.data_source"
,
(
char
*
)
dbh
->
data_source
);
}
}
}
else
if
(
strcmp
(
class_name
,
"PDOStatement"
)
==
0
)
{
char
db_type
[
64
]
=
{
0
};
pdo_stmt_t
*
stmt
=
(
pdo_stmt_t
*
)
Z_PDO_STMT_P
(
&
(
execute_data
->
This
));
if
(
stmt
!=
NULL
)
{
add_assoc_string
(
&
tags
,
"db.statement"
,
stmt
->
query_string
);
if
(
stmt
->
dbh
!=
NULL
&&
stmt
->
dbh
->
driver
->
driver_name
!=
NULL
)
{
memcpy
(
db_type
,
(
char
*
)
stmt
->
dbh
->
driver
->
driver_name
,
stmt
->
dbh
->
driver
->
driver_name_len
);
add_assoc_string
(
&
tags
,
"db.type"
,
db_type
);
}
if
(
db_type
[
0
]
!=
'\0'
&&
stmt
->
dbh
!=
NULL
&&
stmt
->
dbh
->
data_source
!=
NULL
)
{
add_assoc_string
(
&
tags
,
"db.data_source"
,
(
char
*
)
stmt
->
dbh
->
data_source
);
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录