نحوه پیدا کردن و رفع مشکلات عملکرد در برنامه های PHP
[ad_1]
تحلیلگران صنعت سالهاست که مرگ PHP را پیش بینی می کنند. اما PHP همچنان در شاخص های مختلف محبوبیت زبان برنامه نویسی رتبه بالایی دارد و تقریباً مورد استفاده قرار می گیرد هشت از 10 وب سایت، تأمین انرژی قابل توجهی از اینترنت ، از ویکی پدیا گرفته تا برنامه های مدیریت محتوا مانند وردپرس و دروپال که میلیون ها بار استفاده شده است.
PHP یک مدل برنامه نویسی قابل درک برای توسعه دهندگان وب ارائه می دهد. توسعه تکراری و رفع اشکال را تسهیل می کند و منجر به افزایش چشمگیر بهره وری می شود. با این وجود از نظر تاریخی ، PHP به دلیل عملکرد کند و مشکلات امنیتی ، شهرت بدی پیدا کرده است و منجر به س questionsالاتی در مورد آینده آن به عنوان یک زبان برنامه نویسی می شود.
با استفاده از Sentry Performance Monitoring برای PHP ، توسعه دهندگان اکنون می توانند به سرعت مشکلات عملکردی را با برنامه های مبتنی بر PHP خود تشخیص دهند. در عرض چند دقیقه ، آنها می توانند مشکلات مربوط به تماس API ضعیف اجرا شده یا جستجوی پایگاه داده کند و روند سطح را برای کمک به آنها در جلوگیری از مشکلات عملکرد آینده ، صرفه جویی در وقت و کاهش هزینه ها ردیابی کنند.
ردیابی توزیع شده برای برنامه های PHP
برنامه های PHP از اجزای بهم پیوسته ای تشکیل شده است ، مانند قسمت جلویی (برنامه تک صفحه ای) ، قسمت پشتی (REST API) ، صف وظیفه ، سرور پایگاه داده و برنامه ریز کار cron. می توان به هرکسی دستور داد که داده های خطا یا گزارش خرابی را ضبط کند ، اما این تصویر کامل را به توسعه دهندگان نمی دهد ، زیرا هر قطعه به طور جداگانه تجزیه و تحلیل می شود. با نظارت بر عملکرد Sentry برای PHP ، ردیابی توزیع شده به توسعه دهندگان این امکان را می دهد تا تمام داده ها را با یکدیگر پیوند دهند تا ایده واضح تری از اینکه کدام سرویس ها می توانند تأثیر منفی بر عملکرد کلی برنامه داشته باشند ، بگیرند.
ردیابی توزیع شده یک رکورد از کل عملیاتی است که در حال اندازه گیری یا ردیابی است ، مانند زمان بارگذاری صفحه ، یا نمونه ای از کاربر که عملی را در یک برنامه انجام می دهد ، یا یک کار cron در انتهای پشت. و هر ردیابی از یک یا چند ساختار درختی به نام تراکنش تشکیل شده است که به گره های آنها دامنه گفته می شود. در بیشتر موارد ، هر تراکنش یک نمونه واحد از سرویس است که فراخوانی می شود و هر محدوده در آن تراکنش آن خدماتی است که یک واحد کار واحد را انجام می دهد ، خواه فراخوانی یک عملکرد در آن سرویس باشد یا تماس با سرویس دیگری. سرویس. در اینجا یک نمونه ردی به تقسیم و معاملات تقسیم شده است:

از آنجا که معامله دارای یک ساختار درختی است ، دامنه های سطح بالا را می توان به محدوده های کوچکتر تقسیم کرد ، این نشان دهنده چگونگی فراخوانی یک تابع برای تعدادی دیگر از توابع کوچکتر است. این با استفاده از استعاره والدین و فرزندان بیان می شود ، به طوری که هر محدوده می تواند دامنه والدین برای چندین دامنه کودک باشد. در اینجا یک نمای بزرگ از یکی از معاملات نمودار بالا مشاهده می کنید:

برای مرتبط کردن این نمودارها با چیز خاص تر ، ردی را تصور کنید که در یک برنامه جاوا اسکریپت تک صفحه ای شروع می شود. همانطور که صفحه ارائه می شود ، آن یک API به برنامه PHP درخواست می کند. برنامه PHP محدوده هایی را برای پرس و جوهای پایگاه داده ایجاد می کند ، داده هایی را که از memcache بازیابی می کند و مدت زمان سریال سازی JSON را ثبت می کند. سپس ردیابی می تواند در همه کارهای صف ایجاد شده ادامه یابد.
سنجه های زمان واقعی برای برنامه های PHP
با شناسایی آستانه های مفید برای اندازه گیری برنامه های PHP ، توسعه دهندگان می توانند راحت تر تشخیص دهند که خطاها یا مشکلات عملکردی وجود دارد. با استفاده از Sentry Performance Monitoring برای PHP ، معیارهای زمان واقعی به توسعه دهندگان این امکان را می دهند تا رضایت مشتری را بر اساس زمان پاسخ برنامه به تعاملات خود ، به سرعت درک کنند. بیایید برخی از این شاخص ها را بررسی کنیم:
- آپدکس: Apdex یک استاندارد صنعتی است که برای ردیابی و اندازه گیری رضایت مشتری براساس زمان پاسخ برنامه استفاده می شود. این یک استاندارد برای توسعه دهندگان فراهم می کند تا عملکرد معامله را مقایسه کنند ، بفهمند کدام معاملات ممکن است به بهینه سازی یا بررسی بیشتر نیاز داشته باشد و اهداف یا اهداف عملکرد را تعیین کند.
- میزان شکست: درصد معاملات ناموفق را نشان می دهد.
- داده های پهنای باند: تعداد معاملات یک دوره زمانی معین ، معاملات متوسط در دقیقه یا معاملات متوسط در ثانیه را نشان می دهد.
- تاخیر: میانگین زمان پاسخگویی برای همه موارد معامله را نشان می دهد.
- فرکانس: تعداد کل معاملات و سرعت ثبت معاملات.
- بدبختی کاربر: یک شاخص عملکرد با وزن کاربر برای ارزیابی عملکرد نسبی برنامه.
اکنون که توسعه دهندگان قادر به پیگیری دقیق مواردی هستند که باعث ایجاد مشکلات عملکردی در برنامه های PHP می شوند ، بیایید پنج اشتباه رایج را که توسعه دهندگان هنگام ایجاد برنامه های PHP مرتکب می شوند و نحوه حل آنها را بررسی کنیم.
اشتباه شماره 1: ایجاد تعداد زیاد پرس و جو در پایگاه داده
PHP با همان محدودیت هایی که برنامه نویسان برای سایر زبان ها دارند ، مانند بسیاری از درخواست های پایگاه داده ، روبرو است. توسعه دهندگان کارشناس پایگاه داده نیستند. اکثر آنها با تمام ظرایف پایگاه داده ای که استفاده می کنند آشنا نیستند. غالباً ، آنها از لایه دسترسی به پایگاه داده خود استفاده بهینه نمی کنند ، بنابراین در نهایت تعداد زیادی پرس و جو از پایگاه داده یا ایجاد نمایش داده های پایگاه داده که از فهرست ها استفاده نمی کنند ، استفاده می کنند.
پایگاه های داده نیز برای انواع مختلف بار کاری متفاوت ارائه می شوند. یک پایگاه داده که روی یک لپ تاپ با ده ها مگابایت حافظه در حال اجراست ، متفاوت از یک پایگاه داده گیگابایتی تولید عمل می کند زیرا از استراتژی های مختلف برای انتخاب داده ها برای بررسی استفاده می شود. س Quالهایی که روی ماشین محلی یا توسعه دهنده تغییر کرده اند ، می توانند در تولید متفاوت عمل کنند.
کاهش اجرای ضعیف کوئری ها به یک پایگاه داده ، افزودن کوئری های caching و setup است. حافظه پنهان هنگامی که نتیجه از قبل مشخص است یا اغلب در دسترس است ، به کاهش تعداد جستجوهای ارسال شده به پایگاه داده کمک می کند. به عنوان مثال ، “آخرین” مقاله در یک سایت خبری کمتر از آنچه خوانده تغییر می کند. با ذخیره نتایج ، توسعه دهندگان می توانند با خواندن نتایج از حافظه نهان به جای پایگاه داده ، عملکرد را بهبود بخشند. تنظیم کوئری های پایگاه داده معمولاً شامل افزودن فهرست های اضافی به داده هایی است که غالباً با اصطلاحات یا ترکیبات استفاده می شوند. این ممکن است شامل ذخیره سازی داده ها به روش هایی باشد که به استخر دسترسی کمتری نیاز دارند.
خطای شماره 2: بارگیری پرونده های زیادی
با زبانهای برنامه نویسی دیگر ، برنامه ها بارگیری می شوند و سپس کد و داده های مربوطه در حافظه ذخیره می شوند. با این حال ، در PHP حالت دائمی برنامه وجود ندارد – پرونده ها با هر درخواست بارگیری می شوند. وقتی توسعه دهندگان این مورد را در نظر نگیرند ، ممکن است با مشکل بارگیری بیش از حد فایلها روبرو شوند که باعث صرف منابع سیستم و کند شدن عملکرد می شود.
توسعه دهندگان می توانند با فعال کردن حافظه پنهان کد ، این مشکل را حل کنند. مانند بسیاری از زبانها ، PHP کد منبع را به کد کد تبدیل می کند ، سپس در حین اجرای PHP اجرا می شود. تبدیل کد PHP به کد کد در هر درخواست انجام می شود ، زیرا PHP حالت مشترکی ندارد. در حالی که تجزیه و تحلیل کد منبع و تولید کد کد نسبتاً ارزان است ، با پردازش بیشتر برنامه ، هزینه ها افزایش می یابد. با فعال کردن حافظه پنهان کد ، می توان از مرحله تجزیه و تحلیل کد منبع صرف نظر کرد ، و در نتیجه عملکرد قابل اندازه گیری است.
خطای شماره 3: پیکربندی وب سرور نادرست است
برخلاف سایر زبان های برنامه نویسی که وب سرور بخشی از زبان آنها است ، PHP در داخل یک وب سرور اجرا می شود. سرور Apache HTTP و Nginx دو موردی هستند که بیشتر مورد استفاده قرار می گیرند. وب سرور لایه دیگری است که توسعه دهندگان PHP برای نظارت بر آن نیاز دارند. از انتخاب یک مدل فرآیند در Apache تا تنظیم PHP-FPM (مدیر سریع فرآیند) با استفاده از Nginx ، چندین گزینه راه اندازی برای استفاده وجود دارد.
به عنوان مثال ، توسعه دهندگان باید تعداد گردش کار ایجاد شده و تعداد دفعات بازیافت آنها را پیکربندی کنند. اگر کارگران کافی نباشد ، کاربران آنها باید در صف بایستند و منتظر آزادی کارگر بمانند. اگر کارگران زیادی داشته باشند ، ممکن است در ساعات شلوغی حافظه آنها کم شود. توسعه دهندگان می توانند از میزان حافظه ای که برنامه معمولاً استفاده می کند و منابع موجود در سرورهای خود به عنوان راهنمای انتخاب تعداد کارمندان استفاده کنند.
اشتباه شماره 4: اقدامات نادرست امنیتی
PHP به توسعه دهندگان این امکان را می دهد تا انواع مختلفی از الگوی برنامه نویسی را با یکدیگر ترکیب کنند و به طور یکپارچه بین HTML و کد PHP جابجا شوند. بدون سخت گیری ، این امر می تواند به سرعت منجر به کد شلوغی شود که نگهداری آن دشوار است. این انعطاف پذیری یکی از دلایل زبان PHP برای مبتدیان بسیار عالی است ، اما به راحتی می تواند به نقطه ضعفی تبدیل شود که می تواند برنامه ها را در معرض موارد امنیتی مانند برنامه نویسی سایت به سایت (XSS) و تزریق SQL (SQLi) قرار دهد.
توسعه دهندگان می توانند با استفاده از چارچوب ها ، ابزارها و کتابخانه های بالغ ، این خطرات را کاهش دهند. استفاده از کتابخانه الگویی مانند Twig با رمزگذاری خودکار HTML در تمام متغیرهایی که در الگوها ظاهر می شوند ، به جلوگیری از اسکریپت بین سایت ها کمک می کند. استفاده از نقشه برداری رابطه ای شی (ORM) یا کتابخانه انتزاع پایگاه داده می تواند از تزریق SQL با استفاده از عبارات آماده جلوگیری کند.
خطای شماره 5: عدم استفاده از انواع دقیق و نکات مربوط به نوع
PHP دارای یک سیستم بخشودگی است. از نظر تاریخی ، PHP انواع اجباری را به تولید خطا ترجیح داده است. این می تواند به تله هایی از جمله تقسیم اعداد کلمات و به دست آوردن نتایج “مفید” منجر شود ، اما همچنین باعث ایجاد خطاهای زمان اجرا شود. برای کمک به جلوگیری از این نوع خطا ، توسعه دهندگان باید “انواع دقیق” را فعال کرده و از ابزارهایی مانند مزامیر و PHPStan به عنوان بخشی از روند توسعه خود استفاده کنند. این ابزارها کد را به صورت استاتیک تجزیه و تحلیل می کنند و با بررسی اینکه چه نوع داده ای در برنامه آنها استفاده می شود ، می توانند مشکلات احتمالی را قبل از اینکه به مشکلات واقعی تبدیل شوند و کاربران را تحت تأثیر قرار دهند ، شناسایی کنند.
نظارت بر عملکرد گمرکی برای PHP می تواند به توسعه دهندگان کمک کند تا موارد عملکرد رایج را شناسایی کنند ، همانطور که در بالا توضیح داده شد. این نوع تنگناها و خطاهای کد می تواند مشتریان ناراضی را مستقیماً به سمت رقابت سوق دهد. بدون وجود زمینه ای که باعث ایجاد مشکل می شود ، توسعه دهندگان کورکورانه و با پیروی از مسیرهای مختلف وقت ارزشمندی را تلف می کنند. این گران است. مطالعات نشان می دهد که سازمان ها سالانه حدود 4.6 میلیون دلار برای مدیریت حوادث هزینه می کنند. توسعه دهندگان سلاح های امنیتی با بینش بیشتر در مورد وضعیت برنامه برای بهبود تجربه کاربر.
مارک استوری توسعه دهنده اصلی شرکت در است نگهبان، یک شرکت نرم افزاری نظارت بر برنامه ها است که به توسعه دهندگان کمک می کند خطاهای کد و گلوگاه های عملکرد در زمان واقعی را تشخیص ، اندازه گیری و اولویت بندی کنند.
–
انجمن جدید فناوری مکانی را برای کاوش و بحث در مورد فن آوری های نوظهور شرکت ها در عمق و وسعت بی سابقه فراهم می کند. این انتخاب ذهنی است ، براساس انتخاب فناوری هایی که به اعتقاد ما مهم هستند و بیشتر مورد توجه خوانندگان InfoWorld هستند. InfoWorld امنیت بازاریابی را برای انتشار نمی پذیرد و حق ویرایش کلیه مطالب را برای خود محفوظ می داند. کلیه سوالات را به آدرس [email protected] ارسال کنید.
حق چاپ © 2021 ارتباطات IDG ، شرکت
[ad_2]