هندلر های php را بشناسیم
توسط royaflash دذ ۲۳ مرد, ۱۳۹۵ دذ ۱۱:۵۱ قبل از ظهر | دسته‌بندی شده در php, گنو/لینوکس | با ۰ دیدگاه |552 views

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

هندلرهای php چیستند؟

برای اجرای یک سایت php، سرور باید کد php را تفسیر کند و هنگامی که بازدیدکنندگان به وب سایت دسترسی پیدا می کنند صفحه ای را باز کند. آن کد را بر اساس اینکه از کدام کتابخانه php ،از قبیل php 4 یا php 5 استفاده می کنید تفسیر می کند. یک هندلر php چیزی است که در واقع کتابخانه ها را لود می کند بنابراین آنها می توانند برای تفسیر مورد استفاده قرار بگیرند.هندلرهای php چگونه بر روی سرور لود می شود.
چندین هندلر متفاوت وجود دارند که می توانند برای لود php استفاده شوند : CGI ،DSO،suPHP و FastCGI . هر کدام از هندلرها کتابخانه ها را از طریق فایل ها و پیاده سازی های متفاوت ارائه می دهند. هر فایل و پیاده سازی بر عملکرد آپاچی تاثیر می گذارد.به دلیل اینکه تعیین می کند آپاچی چگونه به php سرویس می دهد.
این برای عملکرد سرور شما حیاتی است که هندلری را انتخاب کنید که مناسب وضعیت شما باشد ، انتخاب هندلر صحیح به اندازه انتخاب ورژن php مهم است. یک هندلر لزوما همیشه بهتر از دیگری نیست،آن بستگی به تنظیمات یکتای شما دارد ، چه کشینگی مورد نیاز شماست ، چه ماژول هایی نیاز دارید و غیره.
• نکته : شما ممکن است هندلرهای php متفاوتی را برای ورژن های مختلف php اختصاص دهید،برای مثال ورژن ۵ ممکن است توسط CGI به کار گرفته شود درحالیکه PHP 4 توسط DSO به کار گرفته می شود.

 

لیست هندلرهای php

 

(DSO (mod_php

 

DSO همچنین مشهور به mode_php است . DSO مخفف Dynamic Shared Object است. این یک پیکربندی قدیمی است اما معمولا به عنوان سریع ترین هندلر درنظر گرفته می شود.آن php را به عنوان ماژول آپاچی اجرا می کند. این به این معنی است که اسکریپت های php به عنوان کاربر آپاچی اجرا خواهند شد، که همان کاربر “nobody” است .
DSO دو اشکال دارد. اول ، تمام فایل های ایجاد شده توسط اسکریپت php تولید می شوند مالکیت “nobody “را دارند، آنها قابل خواندن از طریق وب نیستند. وب سایت هایی که نیاز به آپلود فایلها از طریق پی اچ پی دارند با مشکلات پرمیژن در اجرا مواجه خواهند شد. این با کاربران وردپرس که فایل هایشان را از طریق واسط وردپرس آپلود می کنند مشترک است. این با DSO با شکست مواجه خواهد شد.
دومی مشکل امنیتی است ، فایل های ایجاد شده مالکیت “nobody ” دارند ، اگر هکر اکسپلویتی در اسکریپت پی اچ پی پیدا کند، می توانند یک فایلی را پیاده سازی کند که امتیازات مشابهی به عنوان فایل های سیستم مهم دارند که همچنین آنها هم مالکیت “nobody “را دارند. این به آنها این توانایی را می دهد که فایلهایشان را خارج از حساب کاربران ویرایش کنند. این واقعا برای ریزلرها یا کسانی که سایت های دیگران را میزبانی می کنند بد است.شما کاربری نخواهید بود که بتوانید بر روی کاربر دیگر اثر بگذارید.با این وجود اگر فقط یک اکانت بر روی سرور وجود داشته باشد(یا اگر تمام اکانت ها مال شما باشد،DSO دقیقا برای کار شماست. مزایای سرعت DSO غیر قابل انکار است.
راه آسان برای جلوگیری از مشکل هک این است که همیشه نرم افزار سایتتان را به روز نگه دارید.توسعه دهنده اسکریپت PHP خودتان را تا نسخه جدید نگه دارید.اگر شما تنها نفری هستید که بر روی سرور میزبانی می شوید،این برای انجام دادن راحت است از آنجائیکه آن قبلا قسمتی از وظایف مدیریت سایت شما بوده است.به هر حال اگر شما کار نمایندگی می کنید،غیرمنطقی است که از تمام کاربرانتان بخواهید که نرم افزارشان را به روز نگه دارند آنها واقعا ممکن است مثل شما سخت کوش نباشند. مصرف پایین پردازنده DSO به طور معمول منجر به سرعت بالای آن می شود و تنظیم پیش فرض بر روی اکثر سرورهاست.

CGI

CGI مخفف Common Gateway Interface است ،هندلر CGI ، PHP را به عنوان یک ماژول CGI به عنوان مخالف ماژول آپاچی اجرا خواهد کرد. CGI هنوز پردازشهای PHP را به عنوان کاربر “nobody” آپاچی اجرا می کند. به هر حال ، اگر suEXEC را فعال کرده اید، به شما اجازه می دهد کاربری که درخواست ارسال کرده است را مشاهده کنید.
روش CGI به عنوان یک هندلر یدکی زمانی که DSO در دسترس نیست درنظر گرفته می شود. طبق خود اسناد سی پنل ،این روش سریع و یا امن نیست بدون در نظر گرفتن اینکه suEXEC فعال هست یا نه.

suPHP

suphp مخفف تنها کاربر php است. suphp همچنین php را به عنوان ماژول CGI به جای یک ماژول آپاچی اجرا می کند. آن با CGI در اسکریپت PHP که از وب صدا زده شده و تحت کاربری که مالک آنهاست و مخالف “nobody” است اجرا خواهند شد فرق دارد .  suphp به طور معمول هندلر پیش فرض است و توسط سی پنل برای به خدمت گرفته شدن توسط php توصیه می شود به این دلیل که شما قادر خواهید بود که ببینید کدام کاربر مالک حسابی است که توسط اسکریپت php اجرا می شود.
suphp در صورتی که شما از ابزار آپلود فایل در سایتتان از قبیل به روزرسانی های خودکار ، یا نصب کننده تم / پلاگین برای وردپرس استفاده می کنید ،سودمند خواهد بود .فایل ها قبلا مالکیت و مجوزهای صحیح را دارند. آپلود و دیگر توابع وردپرس بدون suphp یا FastCGI کار نخواهند کرد .

suphp همچنین یک مزیت امنیتی را فراهم می کند که هر اسکریپت php که متعلق به کاربر خاصی نیست (مثل حساب دیگر و یا روت)اجرایی نخواهد بود .همچنین ، فایل هایی که پرمیژن های ست شده بر روی world writeable دارند به همین ترتیب غیر اجرایی خواهند بود. این به این معنا است که اگر یک حساب به خطر بیفتد اسکریپت های مخرب قادر نخواهند بود که حساب های دیگر را آلوده کنند.
زیان این موضوع این است که suphp عموما با بار cpu خیلی بالاتر اجرا می شود.در مجموع ،شما نمی توانید از Opcode Cache(مثل Xcache یا APC) با suphp استفاده کنید . به شدت توصیه می شود که یک پلاگین کشینگ را برای تکمیل این نیاز به کار ببرید . اگر شما دریابید که سرور شما هنوز به طور پیوسته با استفاده از cpu درگیر است ، خواسته شما این خواهد بود که به DSO یا FastCGI سوئیچ کنید .

* اگر شما به یکی از گزینه های suphp یا FastCGI سوئیچ کنید ، نیاز خواهید داشت که پرمیژن ها و مالکیت های فایل را به روز رسانی نمایید .

 

FastCGI

(aka: mod_fcgid یا FastCGI  (   FCGI یک تغییر کارایی بالای CGI است.آن مزیت های امنیت و مالکیت suphp را در اسکریپت های php که به عنوان کاربر سی پنل واقعی و مخالف “nobody” اجرا خواهند شد دارد . تفاوتش با FastCGI در این است که آن به شدت می تواند کارایی CPU را ذخیره کرده و سرعتی نزدیک به DSO ارائه دهد . آن همچنین می تواند با یک opcode cacher شبیه eAccelerator و یا APC استفاده شود که می تواند به سرعت بیشتر در بارگذاری صفحات کمک نماید .
زیان این موضوع این است که FastCGI استفاده حافظه بالایی دارد دلیل این است که ایجاد فرایند PHP هر زمان که صدا زده می شود مثل suphp یک نشست پایدار باز را در پس زمینه نگهداری می کند این چیزی است که به آن اجازه می دهد با نرم افزار opcode caching کار کند.
اگر شما مزایای امنیتی / مالکیت suphp را دوست دارید و می توانید از عهده ی یک افزایش عمده در حافظه تان بربیایید (به این معنی که شما قبلا استفاده حافظه متوسط کم را داشته اید)، شما ممکن است که بخواهید استفاده از FastCGI را مد نظر قرار دهید.

نمودار مقایسه

 

FastCGI SuPHP      CGI DSO
*  *          استفاده CPU پایین
* * *        مصرف حافظه پایین
* * *     فقط  w/ suEXEC اجرای PHP به عنوان مالک      سایت به جای آپاچی
* *              امنیت خوب

نکته مهم برای کاربران وردپرس

اگر شما از وردپرس برای اجرای سایتتان استفاده مینمایید لطفا موارد زیر را در نظر بگیرید :
• توابعی که نیازمند آپلود فایل ها به سرور (مثل به روزرسانی های خودکار یا نصب کننده تم / پلاگین) دارند به غیر از حالتی که PHP به عنوان ماژول CGI لود شود کار نخواهد کرد . این به این معنی است که آنها فقط با SUPHP یا FASTCGI کار خواهند کرد. این اطمینان خواهد داد آنها با مالکیت ها و پرمیژن های صحیح لود می شوند.
• پلت فرم های CMS از قبیل وردپرس، لود CPU بالایی را به اجرا می گذارند.بنابراین خواهید خواست که یک پلاگین کشینگ مثل سوپر کش WP را نصب کنید مخصوصا اگر در حال اجرای suphp باشید. اگر شما دریابید که سرور شما هنوز به طور مستمر به استفاده از cpu درگیر است ،ممکن است سوئیچ کردن به DSO یا FastCGI را مد نظر قرار دهید.

 

منبع

درباره - یاشار اسمعیل دخت هستم ۲۷ سالمه (به دنیال یافتم آنم که کیستم)به صورت ۱۰۰٪ به گنو/لینوکس مهاجرت کردم . من رو با نام royaflash میشناسید . در زمینه شبکه و امنیت شبکه فعالیت میکنم . لینوکس همیشه چیزی برای یادگیری داره و لینوکس یه فرهنگه . در صورت نیاز میتونین با آدرس ایمیل : [email protected] یا شماره تلفن : 09141100257 در ارتباط باشید . وبلاگ شخصی من (-:) درباره من

فرستادن یک دیدگاه

XHTML: شما می‌توانید از این برچسب‌ها استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>