當前位置: 首頁>>代碼示例>>PHP>>正文


PHP think\Debug類代碼示例

本文整理匯總了PHP中think\Debug的典型用法代碼示例。如果您正苦於以下問題:PHP Debug類的具體用法?PHP Debug怎麽用?PHP Debug使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


在下文中一共展示了Debug類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。

示例1: output

 /**
  * 調試輸出接口
  * @access public
  * @param Response  $response Response對象
  * @param array     $log 日誌信息
  * @return bool
  */
 public function output(Response $response, array $log = [])
 {
     $request = Request::instance();
     $contentType = $response->getHeader('Content-Type');
     $accept = $request->header('accept');
     if (strpos($accept, 'application/json') === 0 || $request->isAjax()) {
         return false;
     } elseif (!empty($contentType) && strpos($contentType, 'html') === false) {
         return false;
     }
     // 獲取基本信息
     $runtime = number_format(microtime(true), 8, '.', '') - THINK_START_TIME;
     $reqs = number_format(1 / $runtime, 2);
     $mem = number_format((memory_get_usage() - THINK_START_MEM) / 1024, 2);
     // 頁麵Trace信息
     if (isset($_SERVER['HTTP_HOST'])) {
         $uri = $_SERVER['SERVER_PROTOCOL'] . ' ' . $_SERVER['REQUEST_METHOD'] . ' : ' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
     } else {
         $uri = 'cmd:' . implode(' ', $_SERVER['argv']);
     }
     $base = ['請求信息' => date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']) . ' ' . $uri, '運行時間' => number_format($runtime, 6) . 's [ 吞吐率:' . $reqs . 'req/s ] 內存消耗:' . $mem . 'kb 文件加載:' . count(get_included_files()), '查詢信息' => Db::$queryTimes . ' queries ' . Db::$executeTimes . ' writes ', '緩存信息' => Cache::$readTimes . ' reads,' . Cache::$writeTimes . ' writes', '配置加載' => count(Config::get())];
     if (session_id()) {
         $base['會話信息'] = 'SESSION_ID=' . session_id();
     }
     $info = Debug::getFile(true);
     // 頁麵Trace信息
     $trace = [];
     foreach ($this->config['trace_tabs'] as $name => $title) {
         $name = strtolower($name);
         switch ($name) {
             case 'base':
                 // 基本信息
                 $trace[$title] = $base;
                 break;
             case 'file':
                 // 文件信息
                 $trace[$title] = $info;
                 break;
             default:
                 // 調試信息
                 if (strpos($name, '|')) {
                     // 多組信息
                     $names = explode('|', $name);
                     $result = [];
                     foreach ($names as $name) {
                         $result = array_merge($result, isset($log[$name]) ? $log[$name] : []);
                     }
                     $trace[$title] = $result;
                 } else {
                     $trace[$title] = isset($log[$name]) ? $log[$name] : '';
                 }
         }
     }
     // 調用Trace頁麵模板
     ob_start();
     include $this->config['trace_file'];
     return ob_get_clean();
 }
開發者ID:GDdark,項目名稱:cici,代碼行數:65,代碼來源:Html.php

示例2: getId

 public static function getId()
 {
     $user = static::get();
     if (isset($user['id'])) {
         return $user['id'];
     } else {
         Debug::output(new Exception("不存在請求的user_id"));
     }
 }
開發者ID:minowu,項目名稱:smartthink,代碼行數:9,代碼來源:UserSession.php

示例3: save

 /**
  * 日誌寫入接口
  * @access public
  * @param array $log 日誌信息
  * @return bool
  */
 public function save(array $log = [])
 {
     if (IS_AJAX || IS_CLI || IS_API || 'html' != Config::get('default_return_type')) {
         // ajax cli api方式下不輸出
         return false;
     }
     // 獲取基本信息
     $runtime = microtime(true) - START_TIME;
     $reqs = number_format(1 / $runtime, 2);
     $runtime = number_format($runtime, 6);
     $mem = number_format((memory_get_usage() - START_MEM) / 1024, 2);
     // 頁麵Trace信息
     $base = ['請求信息' => date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']) . ' ' . $_SERVER['SERVER_PROTOCOL'] . ' ' . $_SERVER['REQUEST_METHOD'] . ' : ' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], '運行時間' => "{$runtime}s [ 吞吐率:{$reqs}req/s ] 內存消耗:{$mem}kb 文件加載:" . count(get_included_files()), '查詢信息' => \think\Db::$queryTimes . ' queries ' . \think\Db::$executeTimes . ' writes ', '緩存信息' => \think\Cache::$readTimes . ' reads,' . \think\Cache::$writeTimes . ' writes', '配置加載' => count(Config::get())];
     if (session_id()) {
         $base['會話信息'] = 'SESSION_ID=' . session_id();
     }
     $info = Debug::getFile(true);
     // 獲取調試日誌
     $debug = [];
     foreach ($log as $line) {
         $debug[$line['type']][] = $line['msg'];
     }
     // 頁麵Trace信息
     $trace = [];
     foreach ($this->config['trace_tabs'] as $name => $title) {
         $name = strtolower($name);
         switch ($name) {
             case 'base':
                 // 基本信息
                 $trace[$title] = $base;
                 break;
             case 'file':
                 // 文件信息
                 $trace[$title] = $info;
                 break;
             default:
                 // 調試信息
                 if (strpos($name, '|')) {
                     // 多組信息
                     $names = explode('|', $name);
                     $result = [];
                     foreach ($names as $name) {
                         $result = array_merge($result, isset($debug[$name]) ? $debug[$name] : []);
                     }
                     $trace[$title] = $result;
                 } else {
                     $trace[$title] = isset($debug[$name]) ? $debug[$name] : '';
                 }
         }
     }
     // 調用Trace頁麵模板
     ob_start();
     include $this->config['trace_file'];
     echo ob_get_clean();
     return true;
 }
開發者ID:cnzin,項目名稱:think,代碼行數:62,代碼來源:Trace.php

示例4: display

 /**
  * 將html字符串輸出返回給遊覽器
  * 內部調用fetch和render方法,而非直接使用模板引擎的方法
  *
  */
 public function display($templateFile = '', $charset = '', $contentType = '', $content = '', $prefix = '')
 {
     // 標記統計
     Debug::mark('viewStartTime');
     // 視圖開始標簽
     Tag::listen('view_begin', $templateFile);
     // 解析並獲取模板內容
     $content = $this->fetch($templateFile, $content, $prefix);
     // 輸出模板內容
     $this->render($content, $charset, $contentType);
     // 視圖結束標簽
     Tag::listen('view_end');
 }
開發者ID:minowu,項目名稱:smartthink,代碼行數:18,代碼來源:View.php

示例5: run

 public function run(&$content)
 {
     if (C('HTML_CACHE_ON') && defined('HTML_FILE_NAME')) {
         //靜態文件寫入
         // 如果開啟HTML功能 檢查並重寫HTML文件
         // 沒有模版的操作不生成靜態文件
         if (!is_dir(dirname(HTML_FILE_NAME))) {
             mkdir(dirname(HTML_FILE_NAME), 0755, true);
         }
         if (false === file_put_contents(HTML_FILE_NAME, $content)) {
             Debug::throw_exception(L('_CACHE_WRITE_ERROR_') . ':' . HTML_FILE_NAME);
         }
     }
 }
開發者ID:minowu,項目名稱:smartthink,代碼行數:14,代碼來源:WriteHtmlCache.php

示例6: showTrace

 /**
  * 顯示頁麵Trace信息
  * @access private
  */
 private function showTrace()
 {
     // 係統默認顯示信息
     $files = get_included_files();
     $info = [];
     foreach ($files as $key => $file) {
         $info[] = $file . ' ( ' . number_format(filesize($file) / 1024, 2) . ' KB )';
     }
     $trace = [];
     Debug::remark('START', NOW_TIME);
     $base = ['請求信息' => date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']) . ' ' . $_SERVER['SERVER_PROTOCOL'] . ' ' . $_SERVER['REQUEST_METHOD'] . ' : ' . $_SERVER['PHP_SELF'], '運行時間' => Debug::getUseTime('START', 'END', 6) . 's', '內存開銷' => MEMORY_LIMIT_ON ? G('START', 'END', 'm') . 'b' : '不支持', '查詢信息' => N('db_query') . ' queries ' . N('db_write') . ' writes ', '文件加載' => count($files), '緩存信息' => N('cache_read') . ' gets ' . N('cache_write') . ' writes ', '配置加載' => count(Config::get())];
     // 讀取項目定義的Trace文件
     $traceFile = MODULE_PATH . 'trace.php';
     if (is_file($traceFile)) {
         $base = array_merge($base, include $traceFile);
     }
     $debug = Log::getLog();
     $tabs = Config::get('trace_page_tabs');
     foreach ($tabs as $name => $title) {
         switch (strtoupper($name)) {
             case 'BASE':
                 // 基本信息
                 $trace[$title] = $base;
                 break;
             case 'FILE':
                 // 文件信息
                 $trace[$title] = $info;
                 break;
             default:
                 // 調試信息
                 $name = strtoupper($name);
                 if (strpos($name, '|')) {
                     // 多組信息
                     $array = explode('|', $name);
                     $result = [];
                     foreach ($array as $name) {
                         $result += isset($debug[$name]) ? $debug[$name] : [];
                     }
                     $trace[$title] = $result;
                 } else {
                     $trace[$title] = isset($debug[$name]) ? $debug[$name] : '';
                 }
         }
     }
     unset($files, $info, $base, $debug);
     // 調用Trace頁麵模板
     ob_start();
     include Config::has('tmpl_trace_file') ? Config::get('tmpl_trace_file') : THINK_PATH . 'tpl/page_trace.tpl';
     return ob_get_clean();
 }
開發者ID:houseme,項目名稱:think,代碼行數:54,代碼來源:show_page_trace.php

示例7: save

 /**
  * 日誌寫入接口
  * @access public
  * @param array $log 日誌信息
  * @return void
  */
 public function save($log = [])
 {
     // 獲取基本信息
     $current_uri = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
     $runtime = number_format(microtime(true) - START_TIME, 6);
     $reqs = number_format(1 / $runtime, 2);
     // 頁麵Trace信息
     $base = ['請求信息' => date('Y-m-d H:i:s', $_SERVER['REQUEST_TIME']) . ' ' . $_SERVER['SERVER_PROTOCOL'] . ' ' . $_SERVER['REQUEST_METHOD'] . ' : ' . $current_uri, '運行時間' => "{$runtime}s [ 吞吐率:{$reqs}req/s ]", '內存消耗' => number_format((memory_get_usage() - START_MEM) / 1024, 2) . 'kb', '查詢信息' => \think\Db::$queryTimes . ' queries ' . \think\Db::$executeTimes . ' writes ', '緩存信息' => \think\Cache::$readTimes . ' reads,' . \think\Cache::$writeTimes . ' writes', '文件加載' => count(get_included_files()), '配置加載' => count(\think\Config::get()), '會話信息' => 'SESSION_ID=' . session_id()];
     $info = \think\Debug::getFile(true);
     // 獲取調試日誌
     $debug = [];
     foreach ($log as $line) {
         $debug[$line['type']][] = $line['msg'];
     }
     // 頁麵Trace信息
     $trace = [];
     foreach ($this->tabs as $name => $title) {
         $name = strtolower($name);
         switch ($name) {
             case 'base':
                 // 基本信息
                 $trace[$title] = $base;
                 break;
             case 'file':
                 // 文件信息
                 $trace[$title] = $info;
                 break;
             default:
                 // 調試信息
                 if (strpos($name, '|')) {
                     // 多組信息
                     $names = explode('|', $name);
                     $result = [];
                     foreach ($names as $name) {
                         $result = array_merge($result, isset($debug[$name]) ? $debug[$name] : []);
                     }
                     $trace[$title] = $result;
                 } else {
                     $trace[$title] = isset($debug[$name]) ? $debug[$name] : '';
                 }
         }
     }
     // 調用Trace頁麵模板
     ob_start();
     include $this->config['trace_file'];
     echo ob_get_clean();
 }
開發者ID:zhaomingliang,項目名稱:think,代碼行數:53,代碼來源:trace.php

示例8: parseTemplateFile

 /**
  * 自動定位模板文件
  * @access private
  * @param string $templateFile 文件名
  * @return string
  */
 private function parseTemplateFile($templateFile)
 {
     if ('' == $templateFile) {
         // 如果模板文件名為空 按照默認規則定位
         $templateFile = C('TEMPLATE_NAME');
     } elseif (false === strpos($templateFile, C('TMPL_TEMPLATE_SUFFIX'))) {
         // 解析規則為 模板主題:模塊:操作 不支持 跨項目和跨分組調用
         $path = explode(':', $templateFile);
         $action = array_pop($path);
         $module = !empty($path) ? array_pop($path) : CONTROLLER_NAME;
         if (!empty($path)) {
             // 設置模板主題
             $path = dirname(THEME_PATH) . '/' . array_pop($path) . '/';
         } else {
             $path = THEME_PATH;
         }
         $templateFile = $path . $module . C('TMPL_FILE_DEPR') . $action . C('TMPL_TEMPLATE_SUFFIX');
     }
     if (!File::exists_case($templateFile)) {
         Debug::throw_exception(L('_TEMPLATE_NOT_EXIST_') . '[' . $templateFile . ']');
     }
     return $templateFile;
 }
開發者ID:minowu,項目名稱:smartthink,代碼行數:29,代碼來源:LocationTemplate.php

示例9: set

 /**
  * 寫入緩存
  * @access public
  * @param string $name 緩存變量名
  * @param mixed $value  存儲數據
  * @param int $expire  有效時間 0為永久
  * @return boolen
  */
 public function set($name, $value, $expire = null)
 {
     Debug::record('cache_write', 1);
     if (is_null($expire)) {
         $expire = $this->options['expire'];
     }
     $filename = $this->filename($name);
     $data = serialize($value);
     if (C('DATA_CACHE_COMPRESS') && function_exists('gzcompress')) {
         //數據壓縮
         $data = gzcompress($data, 3);
     }
     if (C('DATA_CACHE_CHECK')) {
         //開啟數據校驗
         $check = md5($data);
     } else {
         $check = '';
     }
     $data = "<?php\n//" . sprintf('%012d', $expire) . $check . $data . "\n?>";
     $result = file_put_contents($filename, $data);
     if ($result) {
         if ($this->options['length'] > 0) {
             // 記錄緩存隊列
             $this->queue($name);
         }
         clearstatcache();
         return true;
     } else {
         return false;
     }
 }
開發者ID:minowu,項目名稱:smartthink,代碼行數:39,代碼來源:File.php

示例10: send

 /**
  * 發送數據到客戶端
  * @access public
  * @return mixed
  * @throws \InvalidArgumentException
  */
 public function send()
 {
     // 處理輸出數據
     $data = $this->getContent();
     // Trace調試注入
     if (Env::get('app_trace', Config::get('app_trace'))) {
         Debug::inject($this, $data);
     }
     if (!headers_sent() && !empty($this->header)) {
         // 發送狀態碼
         http_response_code($this->code);
         // 發送頭部信息
         foreach ($this->header as $name => $val) {
             header($name . ':' . $val);
         }
     }
     echo $data;
     if (function_exists('fastcgi_finish_request')) {
         // 提高頁麵響應
         fastcgi_finish_request();
     }
 }
開發者ID:Dragonbuf,項目名稱:god-s_place,代碼行數:28,代碼來源:Response.php

示例11: debug

 /**
  * 數據庫調試 記錄當前SQL
  * @access protected
  * @param boolean $start  調試開始標記 true 開始 false 結束
  */
 protected function debug($start)
 {
     if (!empty($this->config['debug'])) {
         // 開啟數據庫調試模式
         if ($start) {
             Debug::remark('queryStartTime', 'time');
         } else {
             $this->modelSql[$this->model] = $this->queryStr;
             // 記錄操作結束時間
             Debug::remark('queryEndTime', 'time');
             $log = $this->queryStr . ' [ RunTime:' . Debug::getRangeTime('queryStartTime', 'queryEndTime') . 's ]';
             // SQL性能分析
             if (0 === stripos(trim($this->queryStr), 'select')) {
                 $pdo = $this->linkID->query("EXPLAIN " . $this->queryStr);
                 $result = $pdo->fetch(PDO::FETCH_ASSOC);
                 if (strpos($result['extra'], 'filesort') || strpos($result['extra'], 'temporary')) {
                     Log::record('SQL:' . $this->queryStr . '[' . $result['extra'] . ']', 'warn');
                 }
                 $log .= '[ EXPLAIN : ' . var_export($result, true) . ' ]';
             }
             Log::record('[ SQL ] ' . $log, 'sql');
         }
     }
 }
開發者ID:5ini99,項目名稱:think,代碼行數:29,代碼來源:Driver.php

示例12: load_runtime_file

 /**
  * 加載運行時所需要的文件
  * 檢查調試模式創建目錄
  *
  * @return void
  */
 public static function load_runtime_file()
 {
     try {
         // 載入臨時的Helper文件,將重構
         include CORE_PATH . 'Library/Helper' . EXT;
         // 調試模式下檢查路徑和文件
         if (APP_DEBUG) {
             // 創建項目目錄結構
             if (!is_dir(LIB_PATH)) {
                 throw new Exception("不存在項目目錄結構");
             }
             // 檢查緩存目錄
             if (!is_dir(CACHE_PATH)) {
                 // 如果不存在Runtime則創建
                 if (!is_dir(RUNTIME_PATH)) {
                     mkdir(RUNTIME_PATH);
                 } else {
                     if (!is_writeable(RUNTIME_PATH)) {
                         throw new Exception(RUNTIME_PATH . "is no writeable");
                     }
                 }
                 // 檢查並創建Runtime下的緩存目錄
                 foreach (array(CACHE_PATH, LOG_PATH, TEMP_PATH, DATA_PATH) as $key => $value) {
                     if (!is_dir($value)) {
                         mkdir($value);
                     }
                 }
             }
         }
         // 記錄文件加載時間
         Debug::mark('loadTime');
         // 啟動
         App::run();
     } catch (Exception $error) {
         exit($error->getMessage());
     }
 }
開發者ID:minowu,項目名稱:smartthink,代碼行數:43,代碼來源:Smartthink.php

示例13: _404

 /**
  * 404處理 
  * 調試模式會拋異常 
  * 部署模式下麵傳入url參數可以指定跳轉頁麵,否則發送404信息
  * @param string $msg 提示信息
  * @param string $url 跳轉URL地址
  * @return void
  */
 public static function _404($message = '', $url)
 {
     if (APP_DEBUG) {
         Debug::output(new Exception($message));
     } else {
         static::send_http_status(404);
         exit;
     }
 }
開發者ID:minowu,項目名稱:smartthink,代碼行數:17,代碼來源:Response.php

示例14: debug

 /**
  * 數據庫調試 記錄當前SQL
  * @access protected
  * @param boolean $start  調試開始標記 true 開始 false 結束
  */
 protected function debug($start)
 {
     if (!empty($this->config['debug'])) {
         // 開啟數據庫調試模式
         if ($start) {
             Debug::remark('queryStartTime', 'time');
         } else {
             $this->modelSql[$this->model] = $this->queryStr;
             // 記錄操作結束時間
             Debug::remark('queryEndTime', 'time');
             Log::record($this->queryStr . ' [ RunTime:' . Debug::getRangeTime('queryStartTime', 'queryEndTime') . 's ]', 'sql');
         }
     }
 }
開發者ID:lw78665806,項目名稱:think,代碼行數:19,代碼來源:driver.php

示例15: run

 /**
  * 執行應用程序
  * @access public
  * @param Request $request Request對象
  * @return Response
  * @throws Exception
  */
 public static function run(Request $request = null)
 {
     is_null($request) && ($request = Request::instance());
     if ('ico' == $request->ext()) {
         throw new HttpException(404, 'ico file not exists');
     }
     $config = self::initCommon();
     try {
         // 開啟多語言機製
         if ($config['lang_switch_on']) {
             // 獲取當前語言
             $request->langset(Lang::detect());
             // 加載係統語言包
             Lang::load(THINK_PATH . 'lang' . DS . $request->langset() . EXT);
             if (!$config['app_multi_module']) {
                 Lang::load(APP_PATH . 'lang' . DS . $request->langset() . EXT);
             }
         }
         // 獲取應用調度信息
         $dispatch = self::$dispatch;
         if (empty($dispatch)) {
             // 進行URL路由檢測
             $dispatch = self::routeCheck($request, $config);
         }
         // 記錄當前調度信息
         $request->dispatch($dispatch);
         // 記錄路由信息
         self::$debug && Log::record('[ ROUTE ] ' . var_export($dispatch, true), 'info');
         // 監聽app_begin
         Hook::listen('app_begin', $dispatch);
         switch ($dispatch['type']) {
             case 'redirect':
                 // 執行重定向跳轉
                 $data = Response::create($dispatch['url'], 'redirect')->code($dispatch['status']);
                 break;
             case 'module':
                 // 模塊/控製器/操作
                 $data = self::module($dispatch['module'], $config, isset($dispatch['convert']) ? $dispatch['convert'] : null);
                 break;
             case 'controller':
                 // 執行控製器操作
                 $data = Loader::action($dispatch['controller'], $dispatch['params']);
                 break;
             case 'method':
                 // 執行回調方法
                 $data = self::invokeMethod($dispatch['method'], $dispatch['params']);
                 break;
             case 'function':
                 // 執行閉包
                 $data = self::invokeFunction($dispatch['function'], $dispatch['params']);
                 break;
             case 'response':
                 $data = $dispatch['response'];
                 break;
             default:
                 throw new \InvalidArgumentException('dispatch type not support');
         }
     } catch (HttpResponseException $exception) {
         $data = $exception->getResponse();
     }
     // 清空類的實例化
     Loader::clearInstance();
     // 輸出數據到客戶端
     if ($data instanceof Response) {
         $response = $data;
     } elseif (!is_null($data)) {
         // 默認自動識別響應輸出類型
         $isAjax = $request->isAjax();
         $type = $isAjax ? Config::get('default_ajax_return') : Config::get('default_return_type');
         $response = Response::create($data, $type);
     } else {
         $response = Response::create();
     }
     // 監聽app_end
     Hook::listen('app_end', $response);
     // Trace調試注入
     if (Config::get('app_trace')) {
         Debug::inject($response);
     }
     return $response;
 }
開發者ID:GDdark,項目名稱:cici,代碼行數:88,代碼來源:App.php


注:本文中的think\Debug類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。