آموزش کدنویسی وردپرس: post #211 — TG.ME

اینم نمونه کد لاگ درخواست های کند:
<?php

class MyCustomLogger
{

private float $start_time = 0;
private int $start_memory = 0;

private float $slow_request_threshold = 0.25;

public function init() {
add_filter( 'rest_pre_dispatch', [ $this, 'before_request' ], 10, 3 );
add_filter( 'rest_post_dispatch', [ $this, 'after_request' ], 10, 3 );
}

public function before_request($response, $server, $request) {
$this->start_time = microtime( true );
$this->start_memory = memory_get_usage();
return $response;
}

public function after_request( $response, $server, $request){

$end_time = microtime(true);
$end_memory = memory_get_usage();
$peak_memory = memory_get_peak_usage();

$duration = $end_time - $this->start_time;

if( $duration > $this->slow_request_threshold ) {
return $response;
}

$memory_used = $end_memory - $this->start_memory;

$log_data = [
'route' => sanitize_text_field( $request->get_route() ),
'method' => sanitize_key( $request->get_method() ),
'params' => $request->get_params(),
'duration_sec' => $duration,
'memory_used_bytes' => $memory_used,
'peak_memory_bytes' => $peak_memory,
'ua' => $_SERVER['HTTP_USER_AGENT'] ?? '',
'timestamp' => current_time( 'mysql' )
];

$log_dir = ABSPATH . '../Logs/' . date('Y/m/');

if( ! file_exists( $log_dir ) ) {
mkdir( $log_dir, 0750, true );
}

$log_path = $log_dir . date('d') . '.log';

file_put_contents( $log_path, json_encode( $log_data ) . PHP_EOL, FILE_APPEND );

return $response;

}

}
❤6
January 7, 2026 1.1K 6