[Slide] Hội thảo PHP: Debugger, Profiler and more

trong danh mục PHP

slide-php-debugger-profiler-and-more

Thế là sáng nay buổi hội thảo cũng diễn ra tốt đẹp, tuy có bắt đầu trễ hơn dự kiến 15p nhưng tất cả nội dung trình bày trong slide đều được nói tới và đầy đủ.

Mình viết vội vài dòng để chia sẻ Slide và tường thuật những gì diễn ra ngày hôm nay để những bạn không có điều kiện tham gia cũng có thể nắm bắt được những gì đã được trình bày.

Buổi hội thảo bắt đầu lúc 8h45 tại cafe Thảo Mộc, TPHCM. Mới khoảng 8h mà đã có thành viên tới nên mình nghĩ các bạn cũng khá háo hức về buổi hội thảo này nên mình phải cố gắng hết sức để trình bày hay và cụ thể nhất để các bạn nắm hết thông tin mà mình chia sẻ.

Dưới đây là Slide của buổi hội thảo PHP: Debugger, Profiler and more mà mình đã trình bày hôm nay.

——————————————————————–
hoi thao php poster

Buổi nói chuyện gồm có 4 phần chính, đầu tiên là phần giới thiệu về các IDE và một số kỹ thuật giúp bạn sử dụng và lựa chọn các IDE tốt và phù hợp với công việc lập trình của mình. Phần này giới thiệu 1 số IDE thông dụng trong quá trình phát triển web như Dreamweaver, Apatana, PhpEd, Zend Studio, PHP Designer…và một số đặc điểm cần có nếu bạn xem xét chọn 1 IDE cho việc lập trình của mình.

Phần thứ 2 là phần chính, đó là trình bày về kỹ thuật debug ứng dụng viết bằng PHP. Mình giới thiệu sơ về các kỹ thuật thông thường mà hầu hết ai cũng sử dụng để debug như sử dụng các hàm xuất echo(), print_r(), var_dump() và cao hơn một chút là sử dụng cơ chế mở và ghi file (fopen(), fwrite(), fclose()) của hệ thống để ghi log và giới thiệu về một kỹ thuật debug hấp dẫn là sử dụng Debugger chuyên nghiệp của PhpEd.

phped debugger function

Các tính năng debug của PhpEd

Bộ debugger cung cấp khá nhiều tính năng cốt lõi để giúp bạn debug ứng dụng như chạy từng bước, step over, step out, run to cursor, breakpoint, xem các biến runtime, xem callstack…Trong buổi hội thảo mình trình bày với các bạn cách cài đặt bộ debugger, cấu hình cho PHP.INI cũng như cài đặt DBGbar addon cho Firefox để tích hợp quá trình debug với PhpEd.

firefox dbgbar addon

DBGbar addon cho Firefox

Giải lao 15 phút và mọi người tiếp tục chú ý để nghe mình trình bày về kỹ thuật Profiling, một kỹ thuật rất quan trọng trước khi bạn cho source của mình chạy thực tế. Quá trình Profile code sẽ giúp bạn tìm ra những điểm thắt cổ chai (bottleneck) trong ứng dụng để từ đó đưa ra những chiến lược phù hợp hơn để giải quyết tình trạng ứng dụng của bạn xử lý chậm.

Mình cũng đề xuất với các bạn trong trường hợp ứng dụng xử lý tốn nhiều thời gian mà không thay đổi được thì mình nên thiết kế lại mô hình sử dụng cơ chế AJAX để chia tải bới cũng như caching những nội dung không thay đổi nhiều.

Xuyên suốt phần profiling, mình giới thiệu đến các bạn thư viện Xdebug, cài đặt và một số cấu hình cần thiết để có thể tiến hành lấy thông tin profile code để phân tích tiếp.

Mình cũng giới thiệu tới các bạn 2 phần mềm rất phổ biến để đọc các kết quả sau khi generate từ Xdebug là: WinCacheGrindKcachegrind.

wincachegrind

Kết quả profile code xem bằng WinCacheGrind

kcachegrind

Kết quả profile code xem bằng Kcachegrind

Cuối cùng, mình chia sẻ với các bạn về kỹ thuật Load Testing để benchmark ứng dụng của mình dưới những tình trạng có nhiều kết nối một lúc và nhiều request một lúc. Trong phần này mình giới thiệu đến các bạn về công cụ ApacheBench (nếu bạn cài Apache rồi thì mặc định đã có ứng dụng này rồi). ApacheBench là một ứng dụng Command Line cho phép request tới 1 trang web nào đó với thông số concurrent connect và request/connection tùy chỉnh được và sau đó coi kết quả để đánh giá performance của trang web.

apachebench ab tool

Kết quả phân tích từ ApacheBench - ab command

Mặc dù ApacheBench khá mạnh, nhưng phần mềm này có 1 hạn chế là bạn chỉ có thể giả lập request đến 1 URL nào đó mà thôi, điều này không giống thực tế lắm. Và để khắc phục hạn chế chỉ cho phép request đến 1 URL này, mình giới thiệu đến các bạn phần mềm Apache jMeter, đây là một ứng dụng Java miễn phí và bạn có thể giả lập request từ nhiều connection đến nhiều trang web khác nhau trong website của bạn.

apache jMeter tool

Kết quả phân tích từ Apache jMeter tool

———————————-

Ngoài ra, tại buổi hội thảo mình cũng có nhờ các bạn tham gia làm 1 survey nhỏ để xem nhu cầu và phản ứng của các bạn thế nào và đây là kết quả sau khi mình phân tích:

php survey installed os for web developer

php survey appserv xampp wamp installation

php survey php ide for your web development

php survey using debugger for php

php survey using profiler for php

php survey web programming language beside php

php survey conference rating

php survey what technology next conference

————

Đó là những gì đã được trình bày tại buổi hội thảo, mình hy vọng các bạn sẽ thấy hứng thú và tham gia vào các hội thảo sau này do BlogHoctap tổ chức. Gởi lời cảm ơn đến trung tâm công nghệ mạng CISNET, văn phòng phẩm BEST, những bạn đã giúp mình trong buổi hội thảo cùng toàn thể các thành viên tham gia đã làm cho buổi hội thảo diễn ra suôn sẻ và thành công. Cảm ơn mọi người.

10 bình luận

  1. Thanks anh nhiều lắm
    Buổi hội thảo này rất có ích ….

    [Reply]

  2. Quả 2 cái screenshot giống hệt nhau (slide Small Quiz, 7/37) mà tác giả hỏi khác nhau sao khó quá :D , bạn Tuấn cho đáp án đi :D

    [Reply]

    admin Reply:

    Hihi, thật sự chỗ đó là em copy từ 1 screenshot ra đó nên có điểm khác nhau mới sợ. Em tạo cái Quizz đó để giúp chỉ cho các bạn hiểu một vấn đề sự quan trong của sử dụng ký tự tab và ký tự khoảng trắng sẽ ảnh hưởng đến quá trình đọc code của mình. Bởi vì nếu sử dụng space thay cho tab thì nhiều khi sẽ bị vấn đề indent khi chuyển sang view code bằng 1 editor khác.

    [Reply]

  3. pqlife says:

    Buổi chia sẻ kiến thức rất bổ ích, củm ơn Tuấn nhiều, mong có nhiều buổi thảo luận hơn nữa về lập trình php và nghề lập trình hen.

    [Reply]

    admin Reply:

    Rất vui khi thấy hội thảo có ích cho bạn. Chắc chắn là sẽ còn có nhiều hội thảo về PHP nữa ^^

    [Reply]

  4. zim says:

    Cảm ơn bạn Tuấn đã chia sẻ những kinh nghiệm bổ ích này! Chúc bạn nhiều sức khỏe để làm nhiều việc có ích cho cộng đồng PHP nữa nhé! :)

    [Reply]

    admin Reply:

    Cảm ơn bạn nhé. Mong được làm quen.

    [Reply]

  5. Tiếc ơi là tiếc, hôm đó bận việc đột xuất nên không đến đc.
    ngậm ngùi download slide về ngâm cứu vậy.
    Thanks anh Tuấn nhiều nhé. E đến với PHP và các giải pháp mã nguồn mở cũng vì những người như anh đó :D

    [Reply]

    admin Reply:

    Tiếc nhỉ, hôm đó mình nói khá nhiều, tối về khan cổ luôn, hihi :D

    [Reply]

  6. minh vua moi buoc vao canh gioi thu ba cua bai nay. con canh gio profi thi minh moi biet thiet la cam on ban nhieu. hoi thao ma ban lap ra nay theo minh la rat co y nghia.

    [Reply]

Gởi bình luận