[WordPress] 外掛分享: WP Log in Browser

首頁外掛目錄 › WP Log in Browser
WordPress 外掛 WP Log in Browser 的封面圖片
⚠ 此外掛已下架 — 不再更新維護,建議勿安裝。
10+
安裝啟用
尚無評分
4834 天前
最後更新
問題解決
WordPress 3.4+ v0.1.2 上架:2012-12-16

內容簡介

我們正在開發一個好的管理畫面,可以設定常見事項(例如 wp_query in pre_get_posts 和 wp)的自動記錄,還有一些附加功能。

您也可以手動記錄一些事項:

browser()->log ( $var, $label );
browser()->warn ( $var, $label );
browser()->info ( $var, $label );
browser()->error( $var, $label );

而且命令是可鏈接的:

browser()->log( 'This is a log...' )->error( '...and this is an error' );

例如,要記錄主要查詢 main query 的 query_vars:

add_filter( 'pre_get_posts', 'log_wp_query', 10000 );

function log_wp_query( $query ) {
if ( $query->is_main_query() )
browser()->log( $query->query_vars, 'pre_get_posts' );

return $query;
}

篩選

wplinb-match-wp-debug:當 wp_debug 為 true 時,設置為 true 以記錄。 防止在 wp_debug 為 false 時記錄:

add_filter( 'wplinb-match-wp-debug', '__return_true' );

wplinb-enabled:完全禁用記錄。 它優先於 wplinb-match-wp-debug,要禁用記錄:

add_filter( 'wplinb-enabled', '__return_false' );

分析

該外掛包含一個非常簡單的功能,讓您可以跟踪代碼的不同部分的執行時間。

browser()->timer( $key, $log = false );

第一次使用具有給定 $key(字符串)的該函數將啟動計時器並返回 false。您可以使用不同的 $key 值開始任意多個計時器。對於該第一次調用,您可以忽略第二個參數。

第二次使用具有給定 $key 的該函數將返回自您啟動此 $key 計時器以來的過去時間(以秒為單位)。如果您將第二個參數設置為 true,它還會將此值記錄到瀏覽器。

範例1:依序使用,手動記錄。

browser()->timer( 'Mega loop' );
for ( $i = 0; $i < 1000000; $i++ ) {
//do something
}
$time = browser()->timer( 'Mega loop' );
browser()->log( $time, 'The mega loop took:' );

範例2:在不同的地方開始和結束,自動記錄。

add_action( 'posts_selection', 'start_timer', 100 );
add_filter( 'the_posts', 'end_timer', 1, 2 );

function start_timer( $query ) {
browser()->timer( 'Main query time' );
}

function end_timer( $posts, $query ) {
browser()->timer( 'Main query time', true );
return $posts;
}

這不是測量查詢運行時間的好方法,只是演示如何使用計時器。

以完全相同的方式,您可以使用函數

Browser()->memory( $key, $log = false );

測量從您的第一次調用和第二次具有相同 $key 的增量記憶體消耗。

範例:

Browser()->memory( 'testing' );
$test = array();
for ( $i = 0; $i < 100; $i++ ) {
$test[$i] = md5( rand( 1, $i ) );
}
Browser()->memory( 'testing', true );

Browser()->memory( 'testing' );
$test = array();
for ( $i = 0; $i < 10000; $i++ ) {
$test[$i] = md5( rand( 1, $i ) );
}
Browser()->memory( 'testing', true );

外掛標籤

開發者團隊

⬇ 下載最新版 (v0.1.2) 或搜尋安裝

① 下載 ZIP → 後台「外掛 › 安裝外掛 › 上傳外掛」
② 後台搜尋「WP Log in Browser」→ 直接安裝(推薦)
📦 歷史版本下載

原文外掛簡介

I’m working on a nice admin screen to config auto-logging of some common things (like wp_query in pre_get_posts and wp), and some other goodies.
To log things manually, you can use:
browser()->log ( $var, $label );
browser()->warn ( $var, $label );
browser()->info ( $var, $label );
browser()->error( $var, $label );

Also, commandas are chainable:
browser()->log( 'This is a log...' )->error( '...and this is an error' );

For example, to log all your main query’s query_vars:
add_filter( 'pre_get_posts', 'log_wp_query', 10000 );

function log_wp_query( $query ) {
if ( $query->is_main_query() )
browser()->log( $query->query_vars, 'pre_get_posts' );

return $query;
}

Filters
wplinb-match-wp-debug: Set to true to only log when wp_debug is true. To prevent logging when wp_debug is false:
add_filter( 'wplinb-match-wp-debug', '__return_true' );

wplinb-enabled: To disable logging completely. It takes precedence over wplinb-match-wp-debug. To disable logging:
add_filter( 'wplinb-enabled', '__return_false' );

Profiling
The plugin includes a really simple function to allow you to track execution time of different parts of your code.
browser()->timer( $key, $log = false );

The first time you call this function with a given $key (string) it will start a timer, and return false. You can start as many timers as you want, using different $key values. You can ignore the second parameter for this first call.
The second time you call this function with a given $key, it will return the ellapsed time in seconds since you started this $key timer. If you set the second parameter to true, it will also log this value to the browser.
Example 1: Sequential use, log manually.
browser()->timer( 'Mega loop' );
for ( $i = 0; $i < 1000000; $i++ ) { //do something } $time = browser()->timer( 'Mega loop' );
browser()->log( $time, 'The mega loop took:' );

Example 2: Start and end in different places, log automatically.
add_action( 'posts_selection', 'start_timer', 100 );
add_filter( 'the_posts', 'end_timer', 1, 2 );

function start_timer( $query ) {
browser()->timer( 'Main query time' );
}

function end_timer( $posts, $query ) {
browser()->timer( 'Main query time', true );
return $posts;
}

This is not a good way of measuring how much time a query takes to run, it’s just to illustrate how to use the timer.
In exactly the same way, you can use the function
Browser()->memory( $key, $log = false );

to measure delta of memory consumption from your first call and your second call with the same $key.
Example:
Browser()->memory( 'testing' );
$test = array();
for ( $i = 0; $i < 100; $i++ ) { $test[$i] = md5( rand( 1, $i ) ); } Browser()->memory( 'testing', true );

Browser()->memory( 'testing' );
$test = array();
for ( $i = 0; $i < 10000; $i++ ) { $test[$i] = md5( rand( 1, $i ) ); } Browser()->memory( 'testing', true );

延伸相關外掛

文章
Filter
Apply Filters
Mastodon