| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- <?php
- namespace UCore;
- use Illuminate\Support\Facades\Cache;
- class Trace
- {
- static $ob;
- public $data = [];
- public $error = [];
- public function __destruct()
- {
- if(app()->runningUnitTests() || defined('IS_UNITTEST')){
- return true;
- }
- if (!function_exists('app') || !app() || !app()->bound('config')) {
- return true;
- }
- if(!defined('RUN_UNIQID')){
- define('RUN_UNIQID', uniqid());
- }
- self::getCache()->put('trace_' . RUN_UNIQID, $this->data, 3600);
- $list = self::getCache()->get('trace_list', []);
- if (count($list) > 300) {
- array_shift($list);
- array_shift($list);
- }
- $list[] = RUN_UNIQID;
- self::getCache()->put('trace_list', $list, 3600);
- }
- /**
- * @return \Illuminate\Contracts\Cache\Repository
- */
- static public function getCache()
- {
- if(app()->runningUnitTests() || defined('IS_UNITTEST')){
- return new class {
- public function put($key, $value, $ttl = null) { return true; }
- public function get($key, $default = null) { return $default; }
- };
- }
- return Cache::store();
- }
- /**
- * 获取数据
- *
- * @param $unid
- * @return mixed
- */
- static public function getData($unid)
- {
- return self::getCache()->get('trace_' . $unid, []);
- }
- static public function getlist()
- {
- return self::getCache()->get('trace_list', []);
- }
- static public function getOb()
- {
- if (!self::$ob) {
- return self::$ob = new Trace();
- }
- return self::$ob;
- }
- /**
- * 增加数据
- *
- * @param string $name
- * @param mixed $data
- * @return Trace
- */
- static public function addData($name, $data)
- {
- $ob = self::getOb();
- $ob->data[$name] = $data;
- return $ob;
- }
- /**
- * 增加错误
- *
- * @param mixed $data
- * @return Trace
- */
- static public function addError($data)
- {
- $ob = self::getOb();
- $ob->error[] = $data;
- return $ob;
- }
- /**
- * 追加数据
- * @param $name
- * @param $data
- * @return Trace
- */
- static public function applyData($name, $data)
- {
- $ob = self::getOb();
- $ob->data[$name][] = $data;
- return $ob;
- }
- }
|