Yosh web dasturchilarga 3ta maslahat (asosan PHP va Yii framework bilan ishlaydigan dasturchilarga)

Assalomu alaykum, Yosh dasturchi!

Ushbu maqolani yozishga meni majbur qilgan narsa haqida aytib o'tmoqchiman. Telegramda Yii Framework Uzbekistan deb nomlangan, Yii da yozadigan dasturchilar guruhi mavjud. Bu guruhda yosh dasturchilar juda ko'p. Ular ham, hammamiz dasturlashni boshlaganda uchraydigan muammolarga duch kelishadi va tez muammoni hal qilish uchun guruhga savol yozishadi.

Ushbu guruhda berilayotgan savollar va dasturchilarning muammolarini kuzatib, shu maqolani yozishga qaror qildim. Eng ko'p uchraydigan muammolar va savollarga yechimlar haqida qo'limdan kelgancha javob berishga va maslahat berishga harakat qilaman.

1-maslahat. PHP, JQUERY, PHP Framework vhkzlardagi biror funksiyani ishlatmoqchi bo'lsangiz ALBATTA QO'LLANMA(dokumentatsiya)SIDAN foydalaning.

Har bir kutubxona yoki komponentani qanday qo'llash kerakligi haqida qo'llanmasi bo'ladi. Misol uchun Yii2 Framework va PHP Qo'llanmasi.

2-maslahat. Loyihs ikki holatda bo'lishi mumkin. Production(foydalanuvchiga yetkazilgan) Yoki Development(lokal). Siz lokalda ishlayotganingizda Error Loglar, DEBUG ni yoqib ishlang. Productionga qo'yganda o'chirib qo'ying.

Debug va Error log ni yoqsangiz nima xatolik bo'layotganligi haqida brovseringizda ko'rinadi.

Yii2 frameworkda DEBUG ni yoqish quyidagicha: /web/index.php faylida

defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

Yii debug uchun qo'llanma

PHP errorlarni browserda ko'rish uchun, asosiy index.php faylning tepasiga yoki, ishlayotgan php faylni tepasiga shularni yozing:

error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);

xatoni aniqlagandan keyin bularni kommentga olib qo'yish esdan chiqmasin.

PHP error loglarni yoqish:

php.ini faylda quyidagi parametrlarni toping:

; Default Value: Off
; Development Value: On
; Production Value: On
; http://php.net/log-errors
log_errors = On
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; http://php.net/error-reporting
error_reporting = E_ALL

Virtual Host sozlanmalarida error loglarni yozish:

Agar webserveringiz Nginx bo'lsa quyidagi qatorni qo'shing:

server {
    listen 80;
    server_name www.somesite.org;
    root /var/www/somesite/;
    access_log /var/log/nginx/somesite.org.access.log;
    error_log /var/log/nginx/somesite.org.error.log;
}

Agar Apache bo'lsa:

<virtualhost *:80="">
  ServerName www.somesite.org 
  DocumentRoot /var/www/somesite.org/htdocs
  CustomLog /var/log/apache/somesite.org-access.log combined
  ErrorLog /var/log/apache/somesite.org-error.log
</virtualhost>
3-maslahat. Xato, Error bo'ldimi, logga qarang!

Xato bo'lganda albatta birinchi navbatda loglarga qarang. Linux tizimida ishlaydigan serverlarda odatda /var/log/ papkasiga yoziladi barcha loglar.

vim /var/log/apache/somesite.org-error.log

Logni ochamiz va o'qiymiz. Tushunmasangiz, errorni Copy qiling va Google Translate ga Paste qilib tarjima qiling yoki Google dan shu muammoni qidiring.

Yii frameworkda ishlayotgan bo'lsangiz, biror xatolik bo'lsa, app/runtime/log/app.log ga ham qarang. Barcha xatoliklarni shu yerga ham yozadi.

Eng ko'p uchraydigan http xatolar:

404 - Sahifa topilmadi. Bunday holatda urllaringizni va urldagi argumentlarni tekshiring.

403 - Ruxsat yo'q. Bu operatsiyani bajarishga sizda huquq yo'q.

400 - Bad request. So'rov berishda xatolik. Xolatga qarab ish tutiladi.

Bonus - 1: DEBUG qilish uchun php-xdebug modulini o'rnatib qadamma-qadam debug qilishni maslahat beraman. Juda ishingiz tezlashadi va osonlik bilan xatoni tez topa olasiz.

XDebug haqida ma'lumot ko'p

Bonus - 2: Mysql da so'rovlaringizni qancha vaqtda bajarayotganligini analiz qiling. Buning uchun quyidagi sozlanmalarni amalga oshiring:

mysql sozlanmalari yozilgan my.cnf yoki my.ini faylni ochib

log_slow_queries = 1; 
slow_query_log_file = /var/log/mysql/slow-query.log;

ni yozing va yuqoridagi log faylni ochib tekshirib turing. Logda mysql ga qanday so'rovlar bo'lyapti va ular qancha vaqtda bajarilayotganini bilib olasiz. Undan keyin ko'p vaqtda bajarilayotgan so'rovlarni optimal qilib yozasiz.

Hozircha shular. Yana esimga kelib qolsa yozaman. Umid qilaman foydasi tegadi!

Savollaringiz bo'lsa telegram orqali yozishingiz mumkin.

Telegramda: SardorOga


boboy

Muallif haqida

boboy


Blogdagi so‘nggi maqolalar:


Birinchi bo‘ling!

Iltimos, fikr bildirish uchun saytga kiring yoki ro‘yxatdan o‘ting!