遠(yuǎn)程調(diào)試

ThinkPHP5.0版本開(kāi)始,提供了Socket日志驅(qū)動(dòng)用于本地和遠(yuǎn)程調(diào)試。

Socket調(diào)試

只需要在配置文件中設(shè)置如下:

'log' =>  [
    'type'                => 'socket',
    'host'                => 'slog.thinkphp.cn',
    //日志強(qiáng)制記錄到配置的client_id
    'force_client_ids'    => [],
    //限制允許讀取日志的client_id
    'allow_client_ids'    => [],
]

上面的host配置地址是官方提供的公用服務(wù)端,首先需要去申請(qǐng)client_id 。

使用Chrome瀏覽器運(yùn)行后,打開(kāi)審查元素->Console,可以看到如下所示:

SocketLog通過(guò)websocket將調(diào)試日志打印到瀏覽器的console中。你還可以用它來(lái)分析開(kāi)源程序,分析SQL性能,結(jié)合taint分析程序漏洞。

安裝Chrome插件

SocketLog首先需要安裝chrome插件,Chrome插件安裝頁(yè)面 (需翻墻)

使用方法

  • 首先,請(qǐng)?jiān)赾hrome瀏覽器上安裝好插件。
  • 安裝服務(wù)端npm install -g socketlog-server , 運(yùn)行命令 socketlog-server 即可啟動(dòng)服務(wù)。 將會(huì)在本地起一個(gè)websocket服務(wù) ,監(jiān)聽(tīng)端口是1229 。
  • 如果想服務(wù)后臺(tái)運(yùn)行: socketlog-server > /dev/null &

參數(shù)

  • client_id: 在chrome瀏覽器中,可以設(shè)置插件的Client_ID ,Client_ID是你任意指定的字符串。 

  • 設(shè)置client_id后能實(shí)現(xiàn)以下功能:

  • 1,配置allow_client_ids 配置項(xiàng),讓指定的瀏覽器才能獲得日志,這樣就可以把調(diào)試代碼帶上線(xiàn)。 普通用戶(hù)訪(fǎng)問(wèn)不會(huì)觸發(fā)調(diào)試,不會(huì)發(fā)送日志。 開(kāi)發(fā)人員訪(fǎng)問(wèn)就能看的調(diào)試日志, 這樣利于找線(xiàn)上bug。 Client_ID 建議設(shè)置為姓名拼音加上隨機(jī)字符串,這樣如果有員工離職可以將其對(duì)應(yīng)的client_id從配置項(xiàng)allow_client_ids中移除。 client_id除了姓名拼音,加上隨機(jī)字符串的目的,以防別人根據(jù)你公司員工姓名猜測(cè)出client_id,獲取線(xiàn)上的調(diào)試日志。

  • 設(shè)置allow_client_ids示例代碼:

    'allow_client_ids'=>['thinkphp_zfH5NbLn','luofei_DJq0z80H'],
    
  • 2, 設(shè)置force_client_ids配置項(xiàng),讓后臺(tái)腳本也能輸出日志到chrome。 網(wǎng)站有可能用了隊(duì)列,一些業(yè)務(wù)邏輯通過(guò)后臺(tái)腳本處理, 如果后臺(tái)腳本需要調(diào)試,你也可以將日志打印到瀏覽器的console中, 當(dāng)然后臺(tái)腳本不和瀏覽器接觸,不知道當(dāng)前觸發(fā)程序的是哪個(gè)瀏覽器,所以我們需要強(qiáng)制將日志打印到指定client_id的瀏覽器上面。 我們?cè)诤笈_(tái)腳本中使用SocketLog時(shí)設(shè)置force_client_ids 配置項(xiàng)指定要強(qiáng)制輸出瀏覽器的client_id 即可。

文檔最后更新時(shí)間:2018-04-26 10:44:08

文檔
目錄

深色
模式

切換
寬度