Laravel Telescope入門教程(上)
Laravel Telescope是Laravel的新應用型debug助手,由Mohamed Said和Taylor Otwell編寫。它是開源的,在GitHub上免費,並將在下週釋出。
您將通過Composer將Telescope作為第三方依賴項引入您的應用程式。
安裝Telescope後,您將通過訪問應用程式的/telescope路徑來訪問它。
Telescope是做什麼的?
如果您曾經使用過Clockwork或Laravel Debugbar,認為它們是功能強大的單機UI。
Telescope由一系列watchers組成,這些watchers“觀察”進入應用程式的每個請求,無論是來自HTTP請求,來自命令列,來自排程程式還是來自佇列。
這些watchers捕獲關於這些請求及相關資料的各種資訊-例如資料庫查詢及其執行時間、快取命中和未命中、事件觸發、郵件傳送等等。
UI中有用於檢查以下各項的選項卡,每個選項卡都反映一個“Watcher”:
要求(Requests)
命令(Commands)
時間表(Schedule)
工作(Jobs)
例外(Exceptions)
日誌(Logs)
轉儲(Dumps)
查詢(Queries)
模型(Models)
活動(Events)
郵件(Mail)
通知(Notifications)
快取記憶體(Cache)
Redis
Tab/Watchers
讓我們逐步瀏覽每個tab讓我們檢查的內容。每個tab都顯示一個列表頁面,然後允許您深入檢視任何給定專案的詳細資訊頁面。
(HTTP)請求
此tab允許您檢視進入應用程式的所有HTTP請求。您將能夠檢視所有HTTP請求以及有關每個請求的各種有用資訊。
每個請求頁面還顯示與其他watchers有關此請求的任何資料;例如:所有資料庫查詢以及它們花了多長時間;哪個使用者已針對此請求進行身份驗證等等。
命令
命令選項卡列出已執行的所有命令及其退出程式碼。進去後,您還可以檢視所有引數、選項和相關專案。
時間表
列出已執行的計劃任務。在每個任務的詳細資訊頁面上,檢視他們的所有計劃資訊,例如他們的cron計劃(例如*****)。
作業(Jobs)
“Jobs”選項卡列出已執行或全部正在執行的所有作業。它與Horizon類似,但Horizon僅限Redis。不僅僅是一個UI,它還與佇列工作者的執行方式進行互動。另一方面,Telescope只是一個UI,但它也適用於所有佇列驅動程式。
在作業列表頁面上,您能看到作業名稱、執行的佇列和連線、狀態以及發生時間。
在作業詳情頁面上,您將能夠看到所有這些資料以及:主機名、作業的完全限定類名、連線、佇列、嘗試次數、超時、標籤。
如果有使用者附加,則使用附加的Eloquent模型(例如App\Video:1)自動標記作業。
標籤(Tags)
諸如請求、命令等專案將由Telescope自動分配標籤(例如,如果它是使用者的請求,它將自動分配標籤Auth:1;您可以單擊該標籤,它將僅過濾他們的標記項,等等)
就像HTTP請求一樣,您可以看到與此作業相關的各種資訊,例如它觸發的資料庫查詢,此作業啟動的作業以及它生成的任何日誌。
如果您啟動閉包(closure)而不是看到App\Jobs\RenderVideo,您會看到Closure(web.php:43)顯示它的定義位置。
新佇列的閉包。
Taylor為一個新庫做出了貢獻,帶回了佇列的閉包,Laravel曾經擁有這些閉包,但不久前就拋棄了。使用這些貢獻和這個新庫,如果你用模型將它匯入到閉包中,它將儲存模型ID,而不是整個模型,這要好得多(以及已經有的佇列類)。所以,佇列閉包又回來了!
dispatch(function()use($video){
//do stuff in a queued job
});
這次將用雜湊序列化閉包;這是因為有了排隊閉包,有人可以事先修改你的佇列事件,以便通過它注入任意PHP,這是不好的!現在它雜湊序列化了,並再次檢查你的程式碼。
Closure被序列化為一個長字串,其中包含整個程式碼及其雜湊(使用類似於簽名URL的程式碼)。
例外情況
記錄所有異常並允許您檢查每個異常。這將向您顯示與其他選項卡類似的資料,如主機名、型別、請求、標籤、經過身份驗證的使用者。
但是你也會看到程式碼中的位置,突出顯示,上面和下面有幾行程式碼;而且你也會獲得完整的堆疊跟蹤。
![](http://i2.51cto.com/images/blog/201811/09/6025f85231af87db77c3ad5138697965.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
您還可以從引發它的請求中獲取指向異常詳細資訊頁面的連結。
注意:在許多選項卡中,如果您在單個頁面上(例如,給定例外的頁面),您將獲得指向生成該頁面的請求頁面的連結。
如果多次發生相同的異常,它們將在列表頁面上進行分組,但您仍然可以深入檢視異常顯示頁面中的各個異常。
日誌
“日誌”選項卡顯示基本日誌訊息、級別以及所有日誌項的發生時間。
當您訪問該個人詳細資訊頁面時,在日誌項中,您可以看到更多資訊,包括傳遞給日誌項的任何上下文資料(作為陣列)。
“比挖掘原始文字檔案更好”。
如果您使用陣列將上下文傳遞給日誌項,可以檢視所有資料,檢視觸發它的請求,哪個使用者觸發了它。“比挖掘原始文字檔案好一點。”
![](http://i2.51cto.com/images/blog/201811/09/6e283e844e3ea66073a10c96beaaaf88.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
本文轉載自資料星河:www.bdgstore.com.cn