🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
>注: 工欲善其事必先利其器 # 开发环境 ## xdebug 开发式时非常好用 强大的单步调试, 断点调试, 临时改变内存变量值, 具体的使用请参考我的一篇phpstorm+xdebug的文章 ## 写文件缓存 ``` put_file_contents() ``` ``` function logg($val, $trace = '') { $content = date("Y-m-d H:i:s") . $trace ."\n" . var_export($val, true). "\n................\n\n"; file_put_contents('log.txt', $content, FILE_APPEND); } ``` ## 获取内存占用 ``` memory_get_usage() ``` 单位为byte ``` $start = memory_get_usage(); do_something(); $end = memory_get_usage(); $mem_do_something = $end - $start; ``` # 生产环境 生产环境因为一般不具备xdebug, ## 打印调试 print_r + die; var_dump + die; 呃, 其实我觉得这种方式非常sb ## 写文件缓存 put_file_contents() ## 利用框架自带, 如TP ### ThinkPhp的log和write方法 ``` \Think\Log::record("callback hook".var_export($data. true), \Think\Log::DEBUG) \Think\Log::record(var_export($data. true), \Think\Log::WARN) \Think\Log::write(var_export($data. true), \Think\Log::DEBUG) ``` ### 性能调试 ``` G('begin'); // ...其他代码段 G('end'); // ...也许这里还有其他代码 // 进行统计区间 echo G('begin','end').'s'; // 时间 echo G('begin','end','m').'kb'; // 内存 ``` 如果没有end标签, 会自动把当前位置先标记位end标签。 如果环境不支持内存统计,则该参数无效,仍然会进行区间运行时间统计 php 内存泄漏一般较少, 出现了80%都是自己的程序问题, 有时候程序不知道怎么就挂掉了, 监控下内存占用