آموزش کدنویسی وردپرس
831 subscribers
118 photos
27 videos
10 files
113 links
ارتباط با مدیر:
@hamedmoody
Download Telegram
یکی از ویژگی های مهم PHP نسخه 8.5 استفاده از عملگر پایپ یا | برای پاس دادن خروجی هاست

کانال @php2learn را دنبال کنید
👍64
شهادت حضرت فاطمه زهرا (س) تسلیت باد
15😭8👎4🖕2👍1
هوش مصنوعی خوبه اما برای استفاده اگه تخصص اون کارو نداشته باشی میتونه کارتو خراب کنه

مثلا من از Chat Gpt خواستم یه فایل امنیتی htaccess در اختیارم بذاره که یکی از موارد جلوگیری از اسکن اسکنرهاست یعنی این:
# --------------------------------------------------
# 🔥 11) Block bad bots & scanners
# --------------------------------------------------
RewriteCond %{HTTP_USER_AGENT} (httrack|wget|curl|libwww|nmap|sqlmap|fimap|python|nikto|scanner) [NC]
RewriteRule .* - [F,L]

یعنی میگه از user agent از اینا بود جلو درخواست رو بگیره که در ظاهر همه چی عالیه ولی مشکل کجاست؟

ما کرون وردپرس رو از طریق wget اجرا میکنیم و این درخواست عملا اجرا کرون رو به صورت کامل متوقف میکنه که به موارد استفاده از کرون بستگی داره که چقدر مشکل ساز بشه

در حال حاضر میشه از هوش مصنوعی به عنوان یک دستیار استفاده کرد که میتونه اشتباه هم بکنه و شما به عنوان اوستا باید حواست باشه. میتونه خیلی کارتو سرعت بده ولی در عین حال میتونه مشکل هم ایجاد کنه پس باید درست استفاده کرد مخصوصا حوزه برنامه نویسی
👍212
16👏1🎉1🖕1
90% تخفیف به مناسبت شب یلدا 🍉

🌐 https://www.daneshjooyar.com/php-tutorial/
🔥3👏1
یلداتون مبارک 🍉
11👏21
👏74🎉3👎2
میلاد حضرت علی(ع) و روز پدر مباک باشه🌹🌹
17🖕2👏1🎉1🤮1
carbon (1).png
2.5 MB
گاهی اوقات درخواست های Rest ما خیلی کند میشه و متوجه نمیشیم کدوم درخواست هست و چه پارامترهایی داره پس بهتره درخواست های کند رو لاگ کنیم تا برای بهینه سازی اقدام کنیم.

اینجا یک کلاس ساده رو گذاشتم که میتونه درخواست های طولانی از مقدار مشخص رو با پارامترها لاگ کنه تا بتونیم فرآیند بررسی مشکل و انجام بهینه سازی رو انجام بدیم

💡 خط 45 مسیر ذخیره فایل های لاگ رو مشخص میکنیم که باید تغییر بدید. تو کد خارج از public_html ساخته میشه

💡 خط 9 میگه اگه درخواست زیر چند ثانیه باشه لاگ انجام بشه

کانال @wp2learn رو دنبال کنید
4
اینم نمونه کد لاگ درخواست های کند:
<?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
This media is not supported in your browser
VIEW IN TELEGRAM
يا أَيَّتُهَا النَّفْسُ الْمُطْمَئِنَّةُ ارْجِعِي إِلى رَبِّكِ راضِيَةً مَرْضِيَّةً فَادْخُلِي فِي عِبادِي وَ ادْخُلِي جَنَّتِي

آمدم به عنوان قطره ای از دریای عزادار و خونخواهانت که بگم: لا نعلم منه الا خیرا

بدرود ایرانی ترین رهبر، خداحافظ
💩2221👎1🖕1
شرایط قطعی اینترنت و عدم ارتباط سایت وردپرسی با خارج از کشور، باعث کندی زیاد مخصوصا در بخش ادمین میشه که میتونین با کد زیر درخواست های خارجی که با دامنه های خاص مشخص شده رو ببنید
add_filter( 'pre_http_request', function( $pre, $args, $url ) {

$blocked_domains = [
'wordpress.org',
'api.wordpress.org',
'downloads.wordpress.org',
'themes.wordpress.org',
'plugins.wordpress.org'
];

$host = parse_url( $url, PHP_URL_HOST );

if ( $host ) {
foreach ($blocked_domains as $domain) {
if ( str_contains( $host, $domain ) ) {
return new \WP_Error( 'http_blocked', 'Request blocked for this domain' );
}
}
}

return $pre;

}, 10, 3 );
5