انواع PHP Handler
به منظور اجرای یک سایت PHP، سرور باید کد PHP را زمانی که بازدید کنندگان می خواهند به یک صفحه وب سایت دسترسی داشته باشند، تفسیر و تولید کند.
چندین گرداننده های مختلف است که می تواند برای بارگذاری صفحات PHP استفاده شود:
CGI
DSO
suPHP
FastCGI
هر یک از انواع مختلف با توجه به کتابخانه و پیاده سازی های آن تاثیر متفاوتی در عملکرد Apache دارند.
شما باید با توجه به عملکرد سرور نوع Handler را انتخاب نمایید، یک Handlerلزوما همیشه بهتر از دیگری نیست.
DSO (mod_php)
DSO با نام mod_php شناخته می شود.قدیمی ترین نوع PHP و در عین حال سریعترین نوع Handler می باشد.
PHP به عنوان یک ماژول آپاچی اجرا می شود این به این معنی است که اسکریپتهای PHP به عنوان کاربر آپاچی است که کاربر nobody می باشد.
DSO دارای دو مشکل است:
مشکل اول: مالک تمام فای های PHP ایجاد شده کاربر nobody می باشد که در web قابل خواندن نیستند.
بنابراین سایت هایی که برای upload از کد PHP استفاده می نمایند مانند WordPress در این نوع ناتوان از upload از طریق رابط WordPress ویا ویژگیauto-update می شوند.
مشکل دوم: اشکال دوم یک مسئله امنیتی است.اگر هکری راه نفوذی به یک فایل PHP پیدا کند از جایی که ownership همه فایل ها nobody می باشد ممکن است بتواند به تمام اطلاعات تمام اکنت های روی سرور دسترسی پیدا کند. مطمئنا برای خدمات دهندگان Host این گزینه بسیار بد است.
در پایان سرعت بالای DSO انکار ناپذیر است و از CPU بسیار کم استفاده می نماید load کمتر کاری نسبت به سایر Handler ها دارد.
CGI
این Handler به عنوان یک ماژول PHP اجرا می شود نه یک ماژول Apache. در این حالت نیز ownership فایل ها nobody میباشد با این حال، اگر شما suEXEC فعال نمایید امکان بررسی user درخواست دهنده برای اجرای فایل وجود دارد.
CGI عملا استفاده نمی شود و به عنوان Handler یدکی برای زمانی که DSO در دسترس نیست در نظر گرفته شده است.
suPHP
SU مخفف single user می باشد. suPHP نیز به عنوان یک ماژول CGI از PHP اجرا می شود. این نوع تنها تحت کاربر صاحب فایل PHP اجرا می شود نه nobody. این handler پیش فرض کنترل پنل ها می باشد زیرا شما مالک فایل PHP اجرا شونده را می توانید مشاهده نمایید. همچنین SuPHP برای استفاده از upload فایل توسط واسط کاربریPHP مانند آنچه در WordPress می باشد همچنین بروز رسانی و نصب plugin ها توسط کاربر مالک فایل PHP قابل استفاده می باشد. بروز رسانی wordpress و فعال سازی توابع آن فقط در حالت های suPHP یا FastCGI امکان پذیر است.
SuPHP از امنیت بهتری برخوردار می باشد. اسکریپت PHP توسط هر کاربری قابل اجرا نخواهد بود. همچنین اگر یک اکانت به خطر امنیتی بیافتد قادر به آلوده کردن سایر اکانت ها نمی باشد.
مشکل suPHP استفاده بیشتر از CPU و load بالاتر نسبت به سایر Handler ها می باشد. همچنین در این حالت شما نمی توانید از Opcode Cache مانند Xcache یا APCاستفاده نمایید. در صورت نیاز به نصب Opcode Cache شما باید از حالت های DSO یا FastCGI استفاده نمایید.
FastCGI
FastCGI که با نام mod_fcgid یا FCGI نوع کارایی بالا CGI میباشد. عملکردی مشابه SuPHP در زمینه مجوز اجرای فایل های PHP دارد با این تفاوت که بسیار از CPU کمتر استفاده می نماید و سرعت آن نزدیک به حالت DSO می باشد. همچنین در این حالت می توان Opcode Cache ها مانند APC را نصب و فعال نمود که به افزایش عملکرد سرور و بهبود سرعت کمک می نماید.
تنها مشکل آن استفاده زیاد از حافظه Memory می باشد زیرا به جای اجرای فایل PHP در هر زمان، آن را در یک session مداوم در background نگه می دارد. به همین دلیل توصیه می شود دراین حالت از Opcode Cache ها استفاده شود.
FastCGI بسیار جدید است و هنوز اطلاعات زیادی از چگونگی عملکرد آن وجود ندارد و بطور گسترده استفاده نمی شود.
عملکرد کلی به صورت زیر است: