{"id":28092628,"url":"https://github.com/easyops-cn/easykin","last_synced_at":"2025-05-13T13:24:18.873Z","repository":{"id":56974350,"uuid":"100933242","full_name":"easyops-cn/easykin","owner":"easyops-cn","description":"A simple zipkin implementation for php.","archived":false,"fork":false,"pushed_at":"2025-05-11T10:08:05.000Z","size":64,"stargazers_count":9,"open_issues_count":3,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-11T11:20:30.115Z","etag":null,"topics":["php","zipkin"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/easyops-cn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-08-21T08:58:53.000Z","updated_at":"2023-08-19T07:44:47.000Z","dependencies_parsed_at":"2023-01-25T13:15:18.854Z","dependency_job_id":"66698c7a-f799-4773-9af1-0d502481f88e","html_url":"https://github.com/easyops-cn/easykin","commit_stats":{"total_commits":41,"total_committers":5,"mean_commits":8.2,"dds":0.1707317073170732,"last_synced_commit":"2b0c2ecbb8e14be4a7e565273276e7b98175956b"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easyops-cn%2Feasykin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easyops-cn%2Feasykin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easyops-cn%2Feasykin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easyops-cn%2Feasykin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/easyops-cn","download_url":"https://codeload.github.com/easyops-cn/easykin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253948855,"owners_count":21989040,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["php","zipkin"],"created_at":"2025-05-13T13:24:18.076Z","updated_at":"2025-05-13T13:24:18.860Z","avatar_url":"https://github.com/easyops-cn.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# easykin\n[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square \"Software License\")](LICENSE)\n[![Build Status](https://travis-ci.org/easyops-cn/easykin.svg?branch=master)](https://travis-ci.org/easyops-cn/easykin)\n\n这是一个简单的Zipkin PHP库，根据 [官方概念文档](http://zipkin.io/pages/instrumenting.html) 实现，主要用于PHP实现的web服务链路追踪，并针对B3 Propagation封装了专用的Trace类，方便Http服务的接入。\n\n## Quick Start\n\n#### 初始化\n\n定义服务基础信息:\n\n```php\nEasyKin::setEndpoint(\n\t'My service', // 服务名\n\t'127.0.0.1', // 服务IP\n\t80); // 服务端口\n```\n\n定义trace信息上报方式，提供FileLogger和HttpLogger两种方式，可以基于Logger接口实现更多上报方式：\n\n```php\nEasyKin::setLogger(\n\tnew easyops\\easykin\\logger\\HttpLogger(\n\t\t'http://127.0.0.1:9411/api/v1/spans', false));\n```\n\n***初始化Trace***\n\n对于前端（链路的源头）：\n\n```php\nEasyKin::setTrace(new \\easyops\\easykin\\core\\Trace('get:/login'));\n```\n\n对于后端，需要提取请求Header中的B3信息:\n\n```php\n$traceId = !empty($_SERVER['HTTP_X_B3_TRACEID']) ? $_SERVER['HTTP_X_B3_TRACEID']) : null;\n$parentSpanId = !empty($_SERVER['HTTP_X_B3_PARENTSPANID']) ? $_SERVER['HTTP_X_B3_PARENTSPANID'] : null;\n$spanId = !empty($_SERVER['HTTP_X_B3_SPANID']) ? $_SERVER['HTTP_X_B3_SPANID'] : null;\n$isSampled = !empty($_SERVER['HTTP_X_B3_SAMPLED'])) ? $_SERVER['HTTP_X_B3_SAMPLED'] : null;\n\nEasyKin::setTrace(new \\easyops\\easykin\\core\\Trace('get:/login', $sampled, $traceId, $parentSpanId, $spanId));\n```\n\n也可以使用封装好的HttpTrace类，前后端调用方式都一致：\n\n```php\nEasyKin::setTrace(new \\easyops\\easykin\\core\\HttpTrace());\n```\n\n以上动作均需在你的服务程序入口处尽早完成，在程序结尾处执行上报方法：\n\n```php\nEasyKin::trace();\n```\n\n***注意：如果服务程序因为异常而中断，EasyKin依然会上报trace信息***\n\n#### 新建一个Span\n\n当你的服务发起请求时，需要新建一个Span来承载该请求的信息：\n\n```php\n$span = EasyKin::newSpan(\n\t'get:/users', // span名字，这里以请求url作为名字\n\t'users service',  // 请求的服务名\n\t'127.0.0.1',      // 请求的服务IP\n\t8080);            // 请求的服务端口\n```\n\n然后执行你的请求逻辑。当请求结果返回后，应尽快执行：\n\n```php\n$span-\u003ereceive();\n```\n\n以便准确记录该请求的结束时间。\n\n#### 执行上报\n\n当服务应用程序处理完一次请求后，需要执行上报动作：\n\n```php\nEasyKin::trace();\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasyops-cn%2Feasykin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feasyops-cn%2Feasykin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasyops-cn%2Feasykin/lists"}