>注: 工欲善其事必先利其器
# 開發環境
## 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%都是自己的程序問題, 有時候程序不知道怎么就掛掉了, 監控下內存占用