Laravel Telescope Là Gì? Giới Thiệu Về Laravel Telescope

Thảo luận trong 'Tài Liệu' bắt đầu bởi Wall-E, Thg 1 21, 2019.

  1. Wall-E

    Wall-E Moderator Chuyển tiền Tìm chủ đề

    Bài viết:
    Tìm chủ đề
    2,451
    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)

    [​IMG]

    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è:
    1. Requests
    2. Commands
    3. Schedule
    4. Jobs
    5. Exceptions
    6. Logs
    7. Dumps
    8. Queries
    9. Models
    10. Events
    11. Mail
    12. Notifications
    13. Cache
    14. Redis
    Tabs/watchers

    Hãy xem qua từng tab này và những gì nhé

    (HTTP) Requests

    [​IMG]

    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.

    [​IMG]

    Commands & Schedule
    [​IMG]

    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ụ * * * * *)

    [​IMG]

    Jobs

    [​IMG]

    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!

    Mã:
    dispatch(function () use ($video) { // làm thứ gì đó với queued job });
    Exceptions

    [​IMG]

    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

    [​IMG]

    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

    [​IMG]

    "Đâ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.

    Mã:
    select * from `users` order by `name`
    [​IMG]

    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)

    [​IMG]

    Models

    Bạn có thể xem create, update, delete events; cho thấy những thay đổi đã được thực hiện, v.v.

    [​IMG]

    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

    [​IMG]

    Mail

    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.

    [​IMG]

    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

    [​IMG]

    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

    Mã:
    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()

    [​IMG]

    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ó 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: Chung Nguyễn Blog
     
Trả lời qua Facebook

Chia sẻ trang này