php handler و انواع آن

PHP Handler ها متد هایی را تعریف می کنند که وب سرور تنها می تواند در چهارچوب مجاز قوانین تعریف شده توسط آن، با اسکریپت php ارتباط برقرار نماید. داشتن اطلاعاتی هرچند مختصر در ارتباط با انواع PHP Handler ها و معایب و مزایای آنها، می تواند باعث تسریع در تصمیم گیری و انتخاب بهترین Handler پی اچ پی برای سرور گردد.

انواع هندلر های PHP در وب سرور Apache

 

DSO (Dynamic Shared Object) یا mod_php
این هندلر به عنوان یکی از ماژول های وب سرور (Apache) اجرا شده و قدیمی ترین Handler برای PHP می باشد، همچنین سرعت بالا و قابلیت استفاده از Opcode Caching از مزایای آن به حساب می آیند. با استفاده از این هندلر، تمامی اسکریپت های PHP تحت کاربر nobody اجرا می گردند که باعث اجرای سریع تر درخواست ها خواهد شد، ولی مشکلات عمده ای را در سطح دسترسی ها به وجود می آورد. لازم به ذکر است جهت عملکرد بهتر در php، امکان استفاده از directive های این زبان برنامه نویسی به صورت مستقیم در فایل htaccess. وجود دارد.

بزرگترین مشکلی که DSO دارد، این است که تمامی اسکریپت ها تحت یک User اجرا شده و در صورت وجود چند سایت متفاوت روی سرور، امکان رهگیری میزان ریز مصرف سایت ها از منابع سرور به صورت جداگانه، مقدور نمی باشد. همچنین برخی از CMS ها نظیر وردپرس و جوملا، نیاز به انجام عملیات Write روی فایل ها دارند که در این موارد، می بایست سطح دسترسی لازم جهت Write، از قبل روی فایل مورد نظر اعمال گردیده باشد. همچنین هر زمان که فایلی توسط اسکریپت ساخته شود، Owner این فایل به صورت پیش فرض کاربر nobody ست می گردد که این خود می تواند باعث ایجاد مشکلات بیشتری گردد.

مشکل دیگری که در این هندلر وجود دارد، مشکل امنیت فایل هاست، به دلیل اینکه تمامی اسکریپت ها تحت کاربر nobody اجرا می گردند، در صورتی که سایت به وسیله حفره های امنیتی موجود در اسکریپت هک شود و دسترسی اجرای اسکریپت به دست هکر بیافتد، امکان مشاهده و حتی ویرایش فایل های مستعد (دارای سطح دسترسی نادرست) خارج از دایرکتوری سایت هک شده (فایل های سایر سایت ها) برای شخص هکر وجود خواهد داشت.

در صورتی که تنها یک سایت روی سرور وجود دارد و سرعت بالا در هندل نمودن اسکریپت ها، برای شما دارای اهمیت می باشد، می توانید از این هندلر استفاده نمائید.

نکته: به هنگام فراخوانی یک فایل php، ابتدا نیاز است که محتویات آن Parse گردد و این پروسه باعث مصرف Resource خواهد شد. به این اطلاعات Parse شده Opcode گفته می شود. برای جلوگیری از Parse شدن فایل ها در تکرار ارجاع به آنها، محتویات Opcode تولید شده در اولین درخواست توسط ابزارهای Cache (نظیر OPCache) ذخیره شده و سایر درخواست ها به اطلاعات موجود در کش ارجاع داده خواهند شد.

 

suPHP (Single user PHP)
این هندلر به عنوان یک ماژول CGI اجرا شده و از مزیت های آن، می توان به امنیت بسیار بالا و سهولت در تنظیم سطح دسترسی ها اشاره کرد. استفاده از suPHP منعطف ترین و امن ترین راه برای هندل نمودن درخواست های php است. suPHP با استفاده از suEXEC باعث می شود تا به جای کاربر nobody آپاچه، هر اسکریپت تنها بتواند به عنوان کاربری اجرا گردد که Owner اسکریپت است. هر درخواستی به php را یک Proccess جداگانه اجرا نموده و به همین دلیل ردگیری Request ها و یافتن کاربری که بیشترین تعداد Request به php یا مصرف بالای CPU به دلیل اجرای اسکریپت های PHP را دارد، مقدور می باشد.
بزرگترین مزیت suPHP این است که کاربران را از یکدیگر جدا نموده و در صورتی که یک کاربر هک شود، شخص هکر تنها دسترسی به مشاهده اطلاعات آن User خاص داشته و امکان مشاهده اطلاعات سایر کاربران وجود ندارد. در صورت استفاده از این Handler کار با فایل (ایجاد/ویرایش) در CMS های عمومی نظیر وردپرس، جوملا و … به دلیل تنظیمات سطح دسترسی این هندلر، ساده تر بوده و با همان Permission های استاندارد پیش فرض قابل انجام است و بدین منظور نیازی به ست نمودن سطح دسترسی فول (777) نمی باشد.
با توجه به اینکه در این هندلر برای هر درخواست به اسکریپت های php یک proccess جداگانه اجرا می گردد، در مواقع Load بالا، suPHP می تواند باعث کندی در Load سایت گردد و این یکی از معایب آن می باشد. همچنین در صورت بازدید بالای یک سایت به صورت لحظه ای، Proccess های ایجاد شده می تواند باعث کندی در اجرای سایر Proccess های فعال و هم زمان روی سرور گردد. همچنین امکان انجام تغییرات در کانفیگ PHP به طور مستقیم توسط فایل htaccess. وجود نداشته و بدین منظور می بایست از فایل user.ini. یا فایل php.ini اصلی استفاده شود.

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

 

FCGI (FastCGI) یا mod_fcgid
این هندلر به عنوان یک ماژول CGI اجرا شده و دارای مزایای بیشتری نسبت به سایر Handler ها می باشد. تنظیمات این Handler به صورتی است که کمترین میزان مصرف CPU را به هنگام اجرا دارد. همچنین دارای سرعت بالا و قابلیت استفاده از Opcode Caching نیز می باشد. سرعت اجرای اسکریپت ها در این هندلر، بالاتر از suphp و پایین تر از DSO می باشد. FastCGI اسکریپت های اجرا شده را در Ram نگهداری نموده و بدین صورت از Run نمودن Proccess های جداگانه برای آن خودداری نموده و باعث کاهش مصرف CPU می گردد.

از برترین مزایای این هندلر، استفاده از suEXEC می باشد که سبب می گردد هر اسکریپت به جای اجرا تحت کاربر nobody آپاچه، تحت کاربری اصلی و owner خودش اجرا گردد. همچنین نیاز نیست همانند suphp برای هر request پی اچ پی یک Proccess جداگانه ایجاد گردد. در نتیجه با نگهداری اسکریپت در حافظه ی رم، باعث تسریع در اجرای اسکریپت و کاهش میزان مصرف CPU می گردد.

به دلیل اینکه Session های php در این هندلر، جهت دسترسی سریع تر، توسط Ram سرور در Background قرار داده می شوند و همچنین قابلیت استفاده از opcode caching، استفاده از این روش نیازمند مقدار زیادی رم بوده که این یکی از معایب FastCGI می باشد.

در صورتی که مقدار رم آزاد زیادی روی سرور در اختیار دارید و همچنین از سرعت پایین suPHP خسته شده اید، می توانید از این هندلر استفاده نمائید.

 

CGI (Common Gateway Interface)
این هندلر به عنوان یک ماژول CGI اجرا شده و دارای تنظیمات و Config بیشتری نسبت به هندلر قبل می باشد. متاسفانه در این Handler ضعف هایی در سرعت و امنیت نیز دارد. این هندلر نیز همانند suPHP و FastCGI، از suEXEC جهت مدیریت سطح دسترسی ها استفاده می نماید و همانطور که قبلا ذکر شده، این مورد سبب می گردد هر اسکریپت به جای اجرا تحت کاربر nobody آپاچه، تحت کاربری اصلی و owner خودش اجرا گردد. همچنین قابلیت پذیرفتن تنظیمات و Option هایی جهت Config دستی، از دیگر مزایای CGI می باشد.

از بزرگترین معایب این هندلر این است که دارای پایین ترین میزان سرعت در بین سایر هندلرهاست و به همین دلیل از آن استفاده نمی گردد و تنها زمانی پیشنهاد می گردد از این هندلر استفاده نمائید که سایر هندلر ها در دسترس نباشند.

 

PHP-FPM( (FastCGI Process Manager)
این هندلر، یکی از مشتقات (Fork) هندلر Fast-CGI است که دارای feature های مازادی جهت مدیریت بهتر سایت هایی می باشد که دارای Request های بسیار بالاتری نسبت به سایت های معمولی هستند.

برخی از این ویژگی ها به شرح زیر می باشند:

    Adaptive process spawning (NEW!)
    Basic statistics (ala Apache's mod_status) (NEW!)
    Advanced process management with graceful stop/start
    Ability to start workers with different uid/gid/chroot/environment and different php.ini (replaces safe_mode)
    Stdout & stderr logging
    Emergency restart in case of accidental opcode cache destruction
    Accelerated upload support
    Support for a "slowlog"
    Enhancements to FastCGI, such as fastcgi_finish_request() - a special function to finish request & flush all data while continuing to do something time-consuming (video converting, stats processing, etc.)

 

نویسنده: میلاد خوشدل


پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

سیزده + 19 =