diff --git a/sky-php7ext/skywalking.c b/sky-php7ext/skywalking.c index 20cb86f010ec980c69771814853d96ac8bff11e2..2247860219330d4dfb851a9997883feabdcd762a 100644 --- a/sky-php7ext/skywalking.c +++ b/sky-php7ext/skywalking.c @@ -306,7 +306,7 @@ static void generate_context() { sprintf(makeTraceId, "%d.%d.%ld", application_instance, sys_pid, second); add_assoc_string(&SKYWALKING_G(context), "currentTraceId", makeTraceId); - efree(makeTraceId); +// efree(makeTraceId); add_assoc_long(&SKYWALKING_G(context), "isChild", 0); // parent @@ -599,7 +599,7 @@ static void module_init() { i++; } while (application_instance == -100000 && i <= 3); - efree(ipv4s); +// efree(ipv4s); if (application_instance == -100000) { sky_close = 1; @@ -643,8 +643,8 @@ PHP_MSHUTDOWN_FUNCTION(skywalking) if (sky_close == 1) { return SUCCESS; } - zval_dtor(&SKYWALKING_G(context)); - zval_dtor(&SKYWALKING_G(UpstreamSegment)); +// zval_dtor(&SKYWALKING_G(context)); +// zval_dtor(&SKYWALKING_G(UpstreamSegment)); } return SUCCESS; diff --git a/sky-php7ext/src/report/report_client.cpp b/sky-php7ext/src/report/report_client.cpp index 6386b19406e0a7e25325e59f77b0f312fb8ca4af..c608e5b635086d6635620d9885b7740d107db97d 100644 --- a/sky-php7ext/src/report/report_client.cpp +++ b/sky-php7ext/src/report/report_client.cpp @@ -211,6 +211,33 @@ int main(int argc, char **argv) { spanObject->set_componentid(spans[i]["componentId"].get()); spanObject->set_iserror(spans[i]["isError"].get()); + + // refs + auto refs = spans[i]["refs"]; + for (int k = 0; k < refs.size(); k++) { + + std::smatch traceResult; + std::string tmp(refs[k]["parentTraceSegmentId"].get()); + bool valid = std::regex_match(tmp, + traceResult, std::regex("([\\-0-9]+)\\.(\\d+)\\.(\\d+)")); + + UniqueId *uniqueIdTmp = new UniqueId; + long long idp1 = std::stoll(traceResult[1]); + long long idp2 = std::stoll(traceResult[2]); + long long idp3 = std::stoll(traceResult[3]); + uniqueIdTmp->add_idparts(idp1); + uniqueIdTmp->add_idparts(idp2); + uniqueIdTmp->add_idparts(idp3); + + TraceSegmentReference *r = spanObject->add_refs(); + r->set_allocated_parenttracesegmentid(uniqueIdTmp); + r->set_parentspanid(refs[k]["parentSpanId"].get()); + r->set_parentapplicationinstanceid(refs[k]["parentApplicationInstanceId"].get()); + r->set_networkaddress(refs[k]["networkAddress"].get()); + r->set_entryapplicationinstanceid(refs[k]["entryApplicationInstanceId"].get()); + r->set_entryservicename(refs[k]["entryServiceName"].get()); + r->set_parentservicename(refs[k]["parentServiceName"].get()); + } } std::string test;