Giới thiệu về Laravel Telescope - Siêu phẩm mùa thu 2018
Laravel Telescope là một trợ lý gỡ rối ứng dụng mới từ Laravel, được viết bởi Mohamed Said và Taylor Otwell. Laravel Telescope là mã nguồn mở, miễn phí trên GitHub và sẽ được phát hành vào tuần tới (hiện tại là 2018-10-19).
Hình ảnh được chụp trực tiếp tại hội nghị Laracon diễn ra tại Úc nên chất lượng hơi củ chuối nhé
Bạn sẽ bỏ nó vào các ứng dụng của bạn như là một depedency của bên thứ ba thông qua Composer.
Khi bạn cài đặt Telescope, bạn sẽ truy cập nó bằng cách truy cập vào /telescope
của ứng dụng của bạn.
Laravel Telescope là gì?
Telescope tiếng anh nghĩa là Kính viễn vọng, chắc là muốn nói là nó có thể nhìn được xa tít mù khơi luôn ha
Nếu bạn đã từng sử dụng Clockwork hoặc Laravel Debugbar, hãy nghĩ rằng nó là độc lập UI và có siêu năng lực đi cho nó ngầu.
Telescope giống như bọn cảnh vệ bảo vệ đứa con gái nhà giàu, bố làm to (chính là project của bạn - làm mình liên tưởng đến bộ phim In Time - Thời khắc sinh tử, nếu rảnh bạn có thể xem), Telescope sẽ theo dõi mọi yêu cầu đi vào ứng dụng của bạn, cho dù từ yêu cầu HTTP, từ dòng lệnh, từ trình lên lịch hoặc từ hàng đợi (Clockwork hoặc Laravel Debugbar chắc chỉ đủ ngửi khói). Mình tạm gọi Telescope là những người theo dõi vậy.
Những người theo dõi này nắm bắt tất cả các loại thông tin về các yêu cầu hay dữ liệu liên quan - những thứ như truy vấn cơ sở dữ liệu (database queries) và thời gian thực hiện (execution time), lần truy cập bộ nhớ cache (cache hits) và số lần bỏ lỡ (misses), events fired, thư được gửi và nhiều thứ khác nữa...
Dưới đây là liệt kê sơ sơ có bao nhiêu thằng theo dõi nè:
- Requests
- Commands
- Schedule
- Jobs
- Exceptions
- Logs
- Dumps
- Queries
- Models
- Events
- Notifications
- Cache
- Redis
Tabs/watchers
Hãy xem qua từng tab này và những gì nhé
(HTTP) Requests
Tab này cho phép bạn xem tất cả các yêu cầu HTTP đi vào ứng dụng của bạn. Bạn sẽ có thể xem xét tất cả các yêu cầu HTTP và tất cả các loại thông tin hữu ích về từng yêu cầu. Ví dụ:
- payload
- headers
- session
- response
- hostname
- method
- path
- status
Mỗi trang yêu cầu cũng hiển thị bất kỳ dữ liệu nào mà nó có từ những người theo dõi khác có liên quan đến yêu cầu này; ví dụ, tất cả các truy vấn cơ sở dữ liệu và chúng mất bao lâu; người dùng nào được xác thực cho yêu cầu này; và hơn thế nữa.
Commands & Schedule
Tab commands và tab schedule cho phép bạn xem danh sách tất cả các lệnh đã chạy và exit code của chúng, xem các đối số và tùy chọn của chúng và trên trang schedule xem tất cả thông tin lập lịch của chúng như lịch biểu cron của chúng (ví dụ * * * * *).
Jobs
Tab công việc liệt kê tất cả các công việc đã chạy hoặc tất cả chạy. Nó tương tự như Horizon, nhưng là Redis-only và không chỉ là giao diện người dùng - nó cũng tương tác với queue works đang chạy. mặt khác Telescope, chỉ là một giao diện người dùng, nhưng nó cũng hoạt động cho tất cả queue drivers.
Trên trang danh sách công việc, bạn sẽ có thể thấy tên công việc, hàng đợi và kết nối mà nó chạy, trạng thái của nó và khi nó xảy ra.
Trên trang chi tiết công việc bạn sẽ có thể xem tất cả dữ liệu đó và hơn thế nữa: tên máy chủ, tên đầy đủ của job class, kết nối, hàng đợi, số lần thử, thời gian chờ, tag.
Công việc được tự động gắn thẻ với bất kỳ Eloquent model đính kèm nào (ví dụ: App\Video:1
), với người dùng nếu có người dùng được đính kèm, v.v.
Cũng giống như với các yêu cầu HTTP, bạn có thể xem tất cả các loại thông tin liên quan đến công việc này như các truy vấn cơ sở dữ liệu mà nó đã kích hoạt, công việc mà công việc này khởi động và mọi bản ghi mà nó tạo ra.
New queued closures.
Taylor đã đóng góp cho một thư viện mới để đưa trở lại queued closures, mà Laravel đã từng có nhưng đã biến mất một thời gian trước đây. Với sự đóng góp và thư viện mới này, nếu bạn use
một model để import nó vào trong closure, nó sẽ lưu trữ ID của model, không phải toàn bộ model, điều đó tốt hơn nhiều (và các lớp hàng đợi đã làm). Vì vậy, queue closures đã trở lại!
dispatch(function () use ($video) { // làm thứ gì đó với queued job });
Exceptions
Ghi lại tất cả các ngoại lệ và cho phép bạn kiểm tra từng trường hợp ngoại lệ. Điều này sẽ hiển thị cho bạn dữ liệu tương tự với các tab khác, như tên máy chủ, loại, yêu cầu, tag, người dùng được xác thực.
Logs
Hiển thị thông báo tường trình, mức độ, khi nào nó xảy ra, nếu truyền vào một mảng bạn có thể xem tất cả dữ liệu đó, ngoài ra còn xem request nào kích hoạt log, người dùng nào đã kích hoạt. "Đẹp và dễ hiểu hơn trước đây, với việc đào bới trong đống ký tự tùm lum tà la".
Dump screen
"Đây là một trong những tính năng yêu thích của tôi"
Nếu bạn thực hiện dump()
trong code và bạn mở nó trong Telescope, bạn sẽ thấy dumps trong Telescope chứ không phải ứng dụng thực tế của bạn.
Queries
Danh sách tất cả các truy vấn DB của bạn - giống gói Debugbar. Xem truy vấn đầy đủ, yêu cầu nào đã kích hoạt truy vấn, mất bao lâu v.v ...
Chế độ view đã được format rất đẹp.
select * from `users` order by `name`
Truy vấn nào gây mất nhiều thời gian, nó sẽ gắn một cái thẻ slow đỏ chét cho bạn biết mà sửa (hình ở dưới k phải nha)
Models
Bạn có thể xem create, update, delete events; cho thấy những thay đổi đã được thực hiện, v.v.
Events
Hiển thị danh sách tất cả các sự kiện, bạn có thể xem sự kiện nào được broadcast with a tag; xem danh sách tất cả các listeners được tạo ra
Hiển thị danh sách tất cả các email đã được gửi; ai là người nhận; khi nào nó xảy ra; cho dù đó là hàng đợi và sau khi hoàn thành xong ở hàng đợi. Có thể xem email subject và khi vào sâu hơn cũng sẽ thấy bản xem trước của email như MailTrap vậy.
Notifications
Hiển thị tất cả thông báo, loại chúng là gì, v.v.
Cache
Hiển thị lượt truy cập bộ nhớ cache và các lần bỏ lỡ và cập nhật v.v
Hiển thị khóa, dữ liệu, khi nào hết hạn, có thể xem request nào kích hoạt nó và cũng trên trang request, bạn có thể xem tất cả các lần truy cập bộ nhớ cache/misses
Redis
Tương tự như cache
Authenticated user
Nhận thông tin về người dùng được xác thực trên bất kỳ tab nào
Authorization
List danh sách email ai đã access trong telescope service provider
Filtering
Từ ở trên xuống tới dưới bạn thấy đấy, nhiều vãi phải k nào, bộ lọc là cách để lọc bớt, lấy cái nào bạn cần thôi. Trong Telescope service provider
Telescope::filter(function ($entry) { // local thì lấy hết if (local) { return true; } // lấy cái mình cần thôi return $entry->isReportableException || $entry->isfailedJob() || $entry->isScheduledTask() || $entry->hasMonitoredTag(); })
Miscellaneous
Laravel Telescope còn có chế độ ban đêm nữa, không biết bỏ ở đâu đại khái Telescope::night()
Hỏi đáp
Dữ liệu được lưu trữ ở đâu?
Redis, ngoài ra có 6-7 cách gì nữa cho bạn chọn á
Lưu trữ bao nhiêu dữ liệu?
Khoảng 100 mỗi lần
Có thể nhận được thông báo cho Slack không?
Có
Có thể lọc theo thời gian không?
Bây giờ thì không, nhưng nó là open source bạn có thể sửa nó
Tác động của nó đối với thời gian khởi động (có ảnh hưởng tốc độ) không?
Chỉ có một truy vấn được thực thi mỗi lần. Thường thì bạn chắc không dùng nó trên production đâu nhỉ, nó là debug mà 🧐🧐
có thể kiểm tra nhiều ứng dụng trong một giao diện người dùng không?
Yes, chỉ cần chỉ cho họ đăng nhập thông tin của họ trong cùng một cơ sở dữ liệu
Nguồn: @mattstauffer
Dịch và chém gió bởi chungnguyen.xyz
Ủng hộ Chung Nguyễn Blog
Chung Nguyễn Blog sử dụng FlashVPS - Dịch vụ quản trị máy chủ chuyên nghiệp để quản lý VPS
#FlashVPS là dịch vụ cloud panel trên nền tảng web hỗ trợ khách hàng:
- * Quản lý máy chủ số lượng nhiều
- * Không có kinh nghiệm quản lý máy chủ
- * Thích sử dụng giao diện web đơn giản, trực quan hơn terminal
- * Quá nhàm chán với việc ghi nhớ và lặp lại việc gõ các câu lệnh
- * Muốn tự động hóa mọi thao tác
- * Muốn tiết kiệm thời gian quản trị máy chủ
- * Muốn tiết kiệm tiền bạc, nhân lực quản trị máy chủ 👉 https://flashvps.dev
Các bài viết trên website thường xuyên được đăng tải và cập nhật trên trang Facebook Chung Nguyễn Blog hãy tặng cho Chung một LIKE nhé! Mãi yêu các bạn!
813 👍
Bình luận