PDA

View Full Version : حرفه ای: نقش آپاچی و iis در PHP ؟؟



aminghaderi
جمعه 14 بهمن 1390, 17:57 عصر
با سلام خدمت دوستان حرفه ای و اساتید PHP
در مقاله ای مبحث برنامه نویسی سوکت در PHP رو مطالعه می کردم ،در نهایت کمی گیج شدم؟!
PHP برای ارتباط با کلاینت نیازی به واسطه نداره و خودش توانایی این کار را به واسطه قابلت سوکت که بروی آن پیاده سازی شده و توابع آن ، دارد .
حالا نقش Apachi یا IIS این وسط چیست؟؟؟؟؟؟

با تشکر

Unique
جمعه 14 بهمن 1390, 21:34 عصر
Apache و IIS سرویس دهنده وب هستند و تنها در ارسال Response و Request ها بین کاربر و نرم افزار PHP شما دخالت دارند ، تا جایی که من میدونم PHP به صورت مستقل عمل میکنه و با توجه به Extension های خودش با لایه شبکه ارتباط داره ! شما حتی میتونید با PHP برنامه های Desktop بنویسید اما برای راه اندازی یک وب سایت با PHP شما حتما به یک Webserver نیاز دارید.

eshpilen
سه شنبه 18 بهمن 1390, 21:06 عصر
آپاچی خیلی کارها میکنه که اگر PHP میخواست خودش به تنهایی انجام بده میشد چندتا نرم افزار گسترده و پیچیده.
آپاچی درخواستهای همزمان مختلف رو میگیره و بین مفسرها و سایتهای مختلف تقسیم میکنه.
بحث فقط PHP و فقط یک سایت و یک کاربر نیست. باید تمام درخواستهایی رو که برای هر نوع فایلی اعم از استاتیک و دینامیک با زبانهای مختلف میاد مدیریت بکنه. باید virtual host ها رو مدیریت کنه. کلی کانفیگ و تنظیم و مسائل امنیتی و بهینه سازی هست که باید درنظر گرفت و پیاده سازی کرد.
آپاچی یه چیزایی مثل URL Rewriting رو داره.

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

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

آپاچی بیخود آپاچی نشده که حجم و پیچیدگی خودش رو داره.
هرکدام از این نرم افزارها باید جدا باشن چون نمیشه همه رو در یک نرم افزار جمع و مدیریت کرد. خیلی حجیم و پیچیده میشه. ضمنا برای انعطاف لازم باید اینطور باشه. یعنی بخشها و وظایف و سیستمها باید دسته بندی و تفکیک و ماژولار بشن و سطوح/لایه های مختلف وجود داشته باشه و هر نرم افزاری در سطح خودش عمل بکنه و وظایف سطح خودش رو انجام بده.