1. 程式人生 > >Laravel Telescope入門教程(上)

Laravel Telescope入門教程(上)

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)請求

Laravel Telescope入門教程(上)

  此tab允許您檢視進入應用程式的所有HTTP請求。您將能夠檢視所有HTTP請求以及有關每個請求的各種有用資訊。

  Laravel Telescope入門教程(上)

  Laravel Telescope入門教程(上)

  Laravel Telescope入門教程(上)

  每個請求頁面還顯示與其他watchers有關此請求的任何資料;例如:所有資料庫查詢以及它們花了多長時間;哪個使用者已針對此請求進行身份驗證等等。

  Laravel Telescope入門教程(上)

  命令

  Laravel Telescope入門教程(上)

  命令選項卡列出已執行的所有命令及其退出程式碼。進去後,您還可以檢視所有引數、選項和相關專案。

  Laravel Telescope入門教程(上)

  時間表

  列出已執行的計劃任務。在每個任務的詳細資訊頁面上,檢視他們的所有計劃資訊,例如他們的cron計劃(例如*****)。

  Laravel Telescope入門教程(上)

  作業(Jobs)

  Laravel Telescope入門教程(上)

  “Jobs”選項卡列出已執行或全部正在執行的所有作業。它與Horizon類似,但Horizon僅限Redis。不僅僅是一個UI,它還與佇列工作者的執行方式進行互動。另一方面,Telescope只是一個UI,但它也適用於所有佇列驅動程式。

  Laravel Telescope入門教程(上)

  在作業列表頁面上,您能看到作業名稱、執行的佇列和連線、狀態以及發生時間。

  在作業詳情頁面上,您將能夠看到所有這些資料以及:主機名、作業的完全限定類名、連線、佇列、嘗試次數、超時、標籤。

  Laravel Telescope入門教程(上)

  如果有使用者附加,則使用附加的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的程式碼)。

  例外情況

  Laravel Telescope入門教程(上)

  記錄所有異常並允許您檢查每個異常。這將向您顯示與其他選項卡類似的資料,如主機名、型別、請求、標籤、經過身份驗證的使用者。

  Laravel Telescope入門教程(上)

  但是你也會看到程式碼中的位置,突出顯示,上面和下面有幾行程式碼;而且你也會獲得完整的堆疊跟蹤。

  Laravel Telescope入門教程(上)

![](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=)

  您還可以從引發它的請求中獲取指向異常詳細資訊頁面的連結。

  注意:在許多選項卡中,如果您在單個頁面上(例如,給定例外的頁面),您將獲得指向生成該頁面的請求頁面的連結。

  如果多次發生相同的異常,它們將在列表頁面上進行分組,但您仍然可以深入檢視異常顯示頁面中的各個異常。

  日誌

  “日誌”選項卡顯示基本日誌訊息、級別以及所有日誌項的發生時間。

  Laravel Telescope入門教程(上)

  當您訪問該個人詳細資訊頁面時,在日誌項中,您可以看到更多資訊,包括傳遞給日誌項的任何上下文資料(作為陣列)。

  “比挖掘原始文字檔案更好”。

  如果您使用陣列將上下文傳遞給日誌項,可以檢視所有資料,檢視觸發它的請求,哪個使用者觸發了它。“比挖掘原始文字檔案好一點。”

![](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