فهرست مطالب

آیا سرعت PHP نسبت به بقیه زبان‌ها کندتر است؟ (+راهکار )

چرا سرعت php در مقایسه با زبان‌هایی مثل GO کندتر است

دلیلش این است که هر درخواست PHP یک فرآیند جدید را شروع می‌کند. این فرآیند باید از ابتدا تجزیه و اجرا شود و سپس خاموش شود. یعنی هر پروسه به طور کامل بسته شده و از حافظه خارج می‌شود باعث کندی سرعت php می شود.

این یعنی PHP نمی‌تواند چیزی از پردازش‌های قبلی را در حافظه نگه دارد و باید برای هر درخواست جدید از صفر شروع کند. نتیجه این کار، در تعداد درخواست‌های بالا، عملکرد کندتر و مصرف بیشتر منابع سرور است. این روش را “Request-Response” می‌نامند.

 

اما راهکار برای وردپرس و سرعت php چی بود؟

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

PHP-FPM
PHP-FPM باعث می‌شود که چند فرآیند PHP از قبل آماده به کار باشند

اما هنوز سرعت php با این روش در مقایسه با زبان GO کندتر است. پس راهکار نهایی چیست؟

 

php و فیسبوک

کندی PHP برای شرکت‌ها و سازمان‌های بزرگی مانند فیسبوک به یک چالش جدی تبدیل شده بود، زیرا هر فرآیند از ابتدا شروع می‌شد و این بار اضافی برای سازمان‌ها توجیه‌پذیر نبود. به همین دلیل فیسبوک تصمیم گرفت معماری HHVM را طراحی کند، که کد PHP را به بایت‌کد تبدیل کرده و به‌صورت Just-In-Time (JIT) کامپایل می‌کرد.

 

حالا JIT برای PHP چه کاری انجام می‌دهد؟

برای توضیح بهتر، تصور کنید یک تعمیرکار یخچال برای تعمیر روزانه در منازل، همه ابزارهای خود را با خودش ببرد. این کار نه تنها او را خسته می‌کند، بلکه باعث مصرف بیش از حد انرژی و منابع هم می‌شود.

JIT درPHP
و jit دقیقاً همین کار را برای کامپایل یک برنامه انجام می‌دهد؛ یعنی هر بخش از کد فقط زمانی که به آن نیاز باشد، کامپایل و اجرا می‌شود.

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

و jit دقیقاً همین کار را برای کامپایل یک برنامه انجام می‌دهد؛ یعنی هر بخش از کد فقط زمانی که به آن نیاز باشد، کامپایل و اجرا می‌شود.

فیسبوک با این روش تونست یک پلتفرم بزرگ رو در اون زمان با php که تقریبا در زبان php ناممکن به نظر میرسید رو عملی کنه

 

 

فیسبوک با معماری خودش تونسته بود جلوی کندی PHP رو بگیره اما باز کفایت نمیکرد برای همین شرکت ها از معماری‌های میکروسرویس استفاده میکردن

یعنی برای هر بخش از برنامه از زبان ها و تکنولوژی های مختلف استفاده میکردن

اما وردپرس به مرور که سنگین تر میشد جواب سایتای بزرگ رو نمیداد و سایتای بزرگ از وردپرس کوچ میکردن

تا اینکه با تکنولوژی های ردیس و میم کش و opcache باز میشد امید تازه ایی به وردپرس داد و جلو رفت

اما باز جواب گو نبود و باید یک معماری جدید برای php ساخته میشد…!

 

 

معماری FrankenPHP یک راه حل سازمانی برای وردپرس

FrankenPHP
یکی از بزرگترین مزایای FrankenPHP این است که، بر خلاف PHP سنتی، پردازش‌های قبلی را حفظ می‌کند و نیازی نیست که هر بار درخواست جدید از صفر شروع شود

یکی از بزرگترین مزایای FrankenPHP این است که، بر خلاف PHP سنتی، پردازش‌های قبلی را حفظ می‌کند و نیازی نیست که هر بار درخواست جدید از صفر شروع شود. این معماری، با استفاده از قابلیت‌های مدرنی مانند WebSocket و Server Push، به PHP این امکان را می‌دهد که به شکلی نزدیک به برنامه‌های Go عمل کند.

از لحاظ سرعت، FrankenPHP می‌تواند به طرز چشمگیری به عملکرد زبان‌هایی مثل Go نزدیک شود. با حذف نیاز به فرآیندهای متعدد و قابلیت پردازش درخواست‌ها در زمان کوتاه‌تر، FrankenPHP عملکردی مشابه برنامه‌های نوشته شده با Go و سایر زبان‌های بهینه شده برای وب سرورها را ارائه می‌دهد.

github.com/dunglas/frankenphp-wordpress

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

در بحث‌‌ پیرامون این مقاله شرکت کنید!
در تلگرام
کدینکس را دنبال کنید!
در اینستاگرام
کدینکس را دنبال کنید!
تیم تحریریه کدینکس
این مقاله به کوشش منظم اعضای تیم کدینکس تولید شده است. تک‌تک ما امیدواریم که با تلاش خود، تاثیری هر چند کوچک در بهبود کیفیت وب فارسی داشته باشیم.

پیشنهاد میکنیم این مقالات را هم بخوانید

دیدگاهتان را بنویسید

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

بیست − 15 =