
Изработка на сайт, уеб дизайн, електронни магазини, софтуер по поръчка, лого дизайн, визитни картички, банери, каталози и графичен дизайн.
+359 888 898 797
Email: office@ait-webdesign.com
AIT Web Design
Хасково, ул. Хан Аспарух 9 - 11

<?php
class Pmc_Debug
{
protected static $_threshold_to_hide = 0.1;
public static function get_threshold_to_hide() {
return static::$_threshold_to_hide;
}
public static function set_threshold_to_hide( $time ) {
static::$_threshold_to_hide = (float) $time;
}
public static function record_action( $name ) {
$backtrace = debug_backtrace(false);
if ( ! isset($backtrace[2]['args']) ) {
return;
}
foreach ( $backtrace[2]['args'] as &$arg ) {
$arg = ( is_string($arg) ) ? stripslashes($arg) : $arg;
}
$GLOBALS['pmc_action_timer'][microtime()][] = array(
'name' => $name,
'backtrace' => var_export($backtrace[2], true),
);
}
public static function print_recorded_actions() {
?>
<hr />
<div style="padding: 10px; background-color: white; color: black; white-space: pre; text-align: left;">
<pre>
<?php
$timetotals = array();
$break = '<hr />';
$eol = '<br />';
$detail_list = $eol . $eol . $break . $eol . $eol;
$detail_list .= 'Detail action list.' . $eol;
if ( static::get_threshold_to_hide() > 0.0 ) {
$detail_list .= 'Hiding items faster than ' . static::get_threshold_to_hide() . ' seconds.' . $eol;
}
$detail_list .= $eol . $break . $eol;
reset($GLOBALS['pmc_action_timer']);
$previous_item = array('timestamp' => array('sec' => 0.0, 'usec' => 0.0), 'items' => array());
do {
if ( ! isset( $timestamp ) ) {
$timestamp = microtime();
}
if ( ! isset( $items ) ) {
$items = array();
}
list($usec, $sec) = explode(" ", $timestamp);
$sec = (float) $sec;
$usec = (float) $usec;
$timestamp_float = $sec + $usec;
if ( $timestamp && ! isset($start_time) ) {
$start_time = $timestamp_float;
} else {
$end_time = $timestamp_float;
}
if ( empty($previous_items['items']) ) {
$diff = 0.0;
$previous_items['items'][] = array('name' => 'nothing', 'backtrace' => '');
} else {
$diff = $timestamp_float - ( $previous_items['timestamp']['sec'] + $previous_items['timestamp']['usec'] );
}
if ( $diff > static::get_threshold_to_hide() ) {
$previous = array();
if ( ! empty($previous_items['items']) ) {
foreach ( $previous_items['items'] as $previous_item ) {
$previous[] = $previous_item['name'];
}
}
foreach ( $items as $item ) {
$detail_list .= $eol . round($diff, 3) . ' seconds between starting ' . implode(', ', $previous) . ' and starting ' . $item['name'] . $eol;
if ( ! empty($previous_items['items']) ) {
foreach ( $previous_items['items'] as $previous_item ) {
$detail_list .= $previous_item['backtrace'] . $eol;
}
}
$detail_list .= $item['backtrace'] . $eol;
}
}
foreach ( $items as $key => $item ) {
$timetotals[$item['name']][] = $diff;
}
$previous_items['timestamp']['sec'] = $sec;
$previous_items['timestamp']['usec'] = $usec;
$previous_items['items'] = $items;
} while ( list($timestamp, $items) = each($GLOBALS['pmc_action_timer']) );
$detail_list .= $eol . $break . $eol;
$summary_list = $eol . $eol . $break . $eol . $eol;
$summary_list .= 'Action overview: aggregate totals.' . $eol;
if ( static::get_threshold_to_hide() > 0.0 ) {
$summary_list .= 'Hiding items faster than ' . static::get_threshold_to_hide() . ' seconds.' . $eol;
}
$summary_list .= $eol . $break . $eol;
do {
$total_time = 0.0;
if ( isset($times) ) {
foreach ( $times as $time ) {
$total_time += $time;
}
}
if ( $total_time > static::get_threshold_to_hide() ) {
$summary_list .= $tag . ' took approximately ' . round($total_time, 3) . ' seconds' . $eol;
}
} while ( list($tag, $times) = each($timetotals) );
$summary_list .= $eol . $break . $eol;
if ( $end_time < $start_time ) {
$end_time = $start_time;
}
echo 'Request took ' . ( $end_time - $start_time ) . ' seconds from start to finish.' . $eol;
echo $summary_list;
echo $detail_list;
?>
</pre>
</div>
<?php
}
}
Pmc_Debug::record_action('bootup');
function do_action($tag, $arg = “) {
global $wp_filter, $wp_actions, $merged_filters, $wp_current_filter;
// @custom start
Pmc_Debug::record_action($tag);
// @custom end
function do_action_ref_array($tag, $args) {
global $wp_filter, $wp_actions, $merged_filters, $wp_current_filter;
// @custom start
Pmc_Debug::record_action($tag);
// @custom end
function apply_filters($tag, $value) {
global $wp_filter, $merged_filters, $wp_current_filter;
// @custom start
Pmc_Debug::record_action($tag);
// @custom end
function apply_filters_ref_array($tag, $args) {
global $wp_filter, $merged_filters, $wp_current_filter;
// @custom start
Pmc_Debug::record_action($tag);
// @custom end
Pmc_Debug::record_action(‘done’); Pmc_Debug::print_recorded_actions();