2013-02-13 26 views
5

Tôi muốn xdebug chỉ theo dõi "nhảy" hơn X ms hoặc hơn Y KB RAM, ví dụ, mỗi lần thực hiện mất hơn 100ms hoặc tăng mức sử dụng bộ nhớ lên hơn 100KB. Điều này sẽ cho phép tôi bỏ qua hàng ngàn dấu vết mà tôi không cần phải xem và sẽ làm cho việc tối ưu hóa dễ dàng hơn nhiều - như trong ZF2, khung công tác cồng kềnh mất 1 giây để bắt đầu với trình tự động nạp của nhà soạn nhạc trong dự án doanh nghiệp của chúng tôi. trong hàng ngàn dòng tôi thực sự không sử dụng. Một nơi nào đó dọc theo dòng tôi tìm thấy những bước nhảy lớn hơn trong thời gian thực hiện, nhưng không phải sau một thời gian dài di chuyển.Có cách nào để đăng nhập chỉ thực thi chậm hơn X với xdebug không?

Có tùy chọn mặc định để tắt ghi nhật ký "nhanh hơn X" hay không, bạn có biết tập lệnh trình bao trợ giúp/python có thể grep chỉ chậm hơn không?

Để làm rõ, tôi đang nói về nội dung của tệp .xt tôi nhận được bằng cách chạy xdebug_start_trace() trong ứng dụng của tôi.

+0

Bạn đang nói về đầu ra được tạo bởi 'xdebug.trace_ *', phải không? –

+0

Câu hỏi hay, muốn biết câu trả lời quá – Haensel

+0

@FAngel Đã cập nhật câu hỏi chính – Swader

Trả lời

1

Tôi không biết gì về các tùy chọn như vậy, nhưng những gì tôi có thể đề nghị là sử dụng hồ sơ thay vì theo dõi.

Here là một bài viết về cách bạn có thể sử dụng nó. Nếu ngắn, đặt những dòng này vào file php.ini của bạn:

xdebug.profiler_enable = 0 
xdebug.profiler_enable_trigger = 1 
xdebug.profiler_output_dir="c:\Projects" 

và khi bạn muốn bắt đầu hồ sơ, chạy url với tham số truy vấn ?XDEBUG_PROFILE=1

này sẽ tạo ra một tập tin với tên như cachegrind.out.* và địa điểm nó vào profiler_output_dir.

Có thể xem tệp đó bằng trình xem CacheGrind dành cho hệ điều hành của bạn. Liên kết ở trên có danh sách ứng dụng để xem các tệp đó cho các nền tảng khác nhau. Tôi đã sử dụng wincachegrind (cho Windows) để cấu hình ứng dụng ZendFramework. Công cụ rất hữu ích, như đối với tôi. Và giao diện cho phép xem cây cuộc gọi, thời gian thực hiện, số cuộc gọi, v.v. Vâng, nhưng tôi không thấy tùy chọn để đo mức sử dụng bộ nhớ với nó.

+0

Cảm ơn, tôi vừa thử phân tích bộ nhớ đệm với webgrind, nhưng những kết quả đó vô dụng đối với tôi. Giá trị "tổng chi phí cuộc gọi" và "tổng chi phí" hoàn toàn không liên quan, bởi vì tôi không thể nhìn thấy luồng và không thể xác định các bước nhảy lớn và roadbumps - ví dụ, hàm 1() có thể mất 0,003 trong một ngữ cảnh, và 1,3 trong một khác - những dấu vết này không phản ánh điều này. Do đó, tại sao tôi muốn lọc đầu ra dấu vết bằng cách nhảy hiệu suất. – Swader

+1

Hm. Không chắc chắn tôi hoàn toàn hiểu ý của bạn, nhưng trong wincachegrind có hiển thị mục menu tổng thể nếu bạn nhấp chuột phải vào chức năng. Trong bảng tổng thể nó cho thấy tất cả các cuộc gọi của chức năng đó với thời gian của từng chức năng, chức năng người gọi và tập tin. Bên cạnh đó, tôi đã tìm kiếm trên web và có các trình hiển thị đầu ra theo dõi được viết bằng PHP. Không bao giờ sử dụng chúng, nhưng có thể bạn sẽ thấy chúng hữu ích. –

+1

[Ở đây] (http://stackoverflow.com/q/1456395/1558311) là một câu hỏi trên SO, nơi tôi thấy vài liên kết đến trình theo dõi đầu ra dấu vết. –

Các vấn đề liên quan