همانطور که پیچیدگی برنامه های کاربردی وب همچنان در حال رشد است، توسعه دهندگان به طور فزاینده ای بر عملکرد و مقیاس پذیری تمرکز می کنند. لاراول که به عنوان یک چارچوب قدرتمند PHP شناخته می شود، این نیازها را برطرف می کند. با این حال، راه حل های مختلفی برای افزایش عملکرد و مقیاس پذیری این چارچوب در حال توسعه است.
PHP اغلب در مقایسه با زبان های دیگر مانند Go یا JS (Node.js) کند در نظر گرفته می شود زیرا در ابتدا به عنوان یک زبان synchronous و تفسیر شده طراحی شده بود. هر درخواست PHP فرآیند جدیدی را شروع میکند که اسکریپت را میخواند، تجزیه و اجرا میکند، سپس خاموش میشود و منجر به سربار قابل توجهی برای هر درخواست میشود. این مدل «شروع از ابتدا» به زمانهای اجرایی طولانیتری منجر میشود، بهویژه هنگام مدیریت برنامههای بزرگتر یا منطق پیچیده.
علاوه بر این، ماهیت همزمان PHP به این معنی است که هر درخواست باید قبل از ادامه، منتظر کارهایی مانند اتصال دیتابیس یا I/O فایل باشد، که باعث ایجاد گلوگاه در محیطهای با همزمانی بالا میشود. در حالی که ابزارهایی مانند PHP-FPM با مدیریت چندین فرآیند به کاهش برخی از این مشکلات کمک میکنند، روشی که PHP-FPM از فرآیندهای ورکر برای هر درخواست استفاده میکند همچنان بر عملکرد تأثیر میگذارد و باعث میشود PHP برای برخی از وظایف با کارایی بالا در مقایسه با جایگزینهای ناهمزمان کمتر کارآمد باشد. این روش معمول اجرای برنامه لاراول است.
FrankenPHP چیست؟
FrankenPHP یک سرور برنامه جدید برای برنامه های PHP (ساخته شده با Caddy) و یک کتابخانه برای جاسازی مفسر PHP در وب سرورهای Go است.و به توسعه دهندگان جایگزین قدرتمندی برای تنظیمات سنتی مانند PHP-FPM و Nginx می دهد.
ویژگی های کلیدی:
آسان برای Dockerize
حالت ورکر برای عملکرد
پشتیبانی از نکات اولیه
همزمان با مرکز Mercure داخلی
ادغام با سیمفونی، لاراول و ..
HTTPS، HTTP/2 و HTTP3 خودکار
اگر یک توسعه دهنده PHP هستید که به دنبال بهبود عملکرد، امنیت و فرآیند استقرار برنامه خود هستید، وقت آن رسیده است که به فرانکن پی اچ پی به عنوان وب سرور تولیدی خود تغییر دهید. FrankenPHP که بر روی وب سرور قوی Caddy ساخته شده است، نوآوری های مدرنی را ارائه می دهد که تنظیمات سنتی مانند PHP-FPM و Nginx نمی توانند مطابقت داشته باشند.
با ویژگیهایی مانند حالت ورکر، که برنامه شما را برای عملکرد سریعتر در حافظه نگه میدارد، و قابلیتهای رویداد realtime که امکان برقراری ارتباط یکپارچه بین برنامه شما و مرورگر را فراهم میکند، FrankenPHP میتواند به میزان قابلتوجهی پاسخگویی و تجربه کاربری برنامه شما را افزایش دهد. همچنین از HTTPS، HTTP/2، و HTTP/3 خودکار پشتیبانی میکند و مطمئن میشود که برنامه شما ایمن است و از آخرین پروتکلهای وب بدون هیچ گونه پیکربندی اضافی استفاده میکند.
FrankenPHP همچنین با بسته بندی برنامه شما به عنوان یک باینری مستقل، استقرار شما را ساده می کند و نیاز به مدیریت چندین فرآیند مانند PHP-FPM و Nginx را از بین می برد. فرقی نمیکند با لاراول، سیمفونی، وردپرس یا هر فریمورک PHP دیگری کار کنید، FrankenPHP برنامه شما را سریعتر، کارآمدتر و مدیریت آسانتر میکند.
برای توسعه دهندگانی که به دنبال ساده کردن گردش کار خود و ارائه عملکرد بهتر به کاربران نهایی هستند، تغییر به FrankenPHP یک حرکت هوشمندانه است. کاوش را از امروز شروع کنید و پروژه های PHP خود را به سطح بعدی ارتقا دهید.
این شامل پشتیبانی بومی برای Symphony، Laravel، WordPress و موارد دیگر است:
سرور PHP درجه تولید، توسط Caddy
استقرار آسان - برنامه های PHP خود را به عنوان یک باینری مستقل و خود اجرایی بسته بندی کنید
فقط یک سرویس را اجرا کنید - دیگر فرآیندهای جداگانه PHP-FPM و Nginx وجود ندارد
توسعه پذیر - سازگار با PHP 8.2+، اکثر برنامه های افزودنی PHP و همه ماژول های Caddy
حالت Worker - برنامه خود را یک بار بوت کنید و آن را در حافظه نگه دارید
رویدادهای بلادرنگ به عنوان رویداد جاوا اسکریپت به مرورگر ارسال می شوند
فشرده سازی Zstandard و Gzip
ورود به سیستم ساختار یافته
Caddy را با معیارهای داخلی Prometheus مانیتور کنید
پشتیبانی بومی از HTTPS، HTTP/2 و HTTP/3
گواهینامه ها و تمدید خودکار HTTPS
انتشار برازنده - برنامه های خود را با زمان خاموشی صفر اجرا کنید
پشتیبانی از نکات اولیه
FrakenPHP از static-php-cli
برای ساخت بیلدها استفاده میکند، بنابراین این لیست از برنامههای extensions باید دقیق باشد که در آن پسوندها پشتیبانی میشوند.
نصب FrakenPHP
می توانید با FrankenPHP در frankenphp.dev
شروع کنید و اسناد را مرور کنید تا در مورد حالت ورکر، ایمیج Docker و ایجاد باینری های ثابت برنامه خود بیاموزید.
اگر می خواهید برنامه خود را تست کنید، ساده ترین راه برای تست آن اجرای دستور Docker زیر است:
docker run -v $PWD:/app/public \
-p 80:80 -p 443:443 \
dunglas/frankenphp
به https://localhost
بروید و لذت ببرید!
برای لاراول، باید دستور Docker زیر را اجرا کنید (اسناد FrankenPHP Laravel دارای دستورالعملهای راهاندازی کامل هستند):
docker run -p 80:80 -p 443:443 -p 443:443/udp -v $PWD:/app dunglas/frankenphp
اگر ترجیح میدهید از Docker استفاده نکنید، باینریهای مستقل FrankenPHP را برای لینوکس و macOS حاوی PHP 8.3 و محبوبترین extensions PHP ارائه میکند، کافی است وارد وبسایت شوید و دانلود کنید.
برای serve محتوای دایرکتوری فعلی، اجرا کنید:
./frankenphp php-server
همچنین می توانید اسکریپت های خط فرمان را با موارد زیر اجرا کنید:
./frankenphp php-cli /path/to/your/script.php
همچنین می توانید در Laravel Octane نیز از FrankenPHP استفاده کنید. کافی است لاراول اوکتین را نصب کنید:
composer require laravel/octane
و دستور artisan octane:install اجرا کنید. دستور زیر را برای تغییر سرور به FrankenPHP را اجرا کنید:
php artisan octane:install --server=frankenphp
سرور Octane را می توان از طریق دستور octane:frankenphp
Artisan راه اندازی کرد.
php artisan octane:frankenphp
نحوه نصب FrankenPHP در لینوکس
اول از همه، نیازی به نصب ندارد. میتوانید از Docker استفاده کنید یا فایل باینری مستقل را مستقیماً از صفحه انتشار پروژه برای لینوکس و macOS دانلود کنید، به آن مجوز اجرایی بدهید و سپس آن را مانند یک اسکریپت shell با sudo اجرا کنید.
#With Docker
$ docker run -v $PWD:/app/public -p 80:80 -p 443:443 -p 443:443/udp dunglas/frankenphp
#With a Standalone Binary File
$ chmod +x frankenphp #First, Give it a Executable Permission.
$ sudo ./frankenphp php-server #Serve the Content of the Current Directory.
#OR
$ sudo ./frankenphp php-cli /path/to/your/script.php #Serve the Content of the Assigned Script in CLI.
و برای استفاده از آن:
$ sudo ./frankenphp php-server
مزایای استفاده از FrankenPHP
استفاده از FrankenPHP مزایای زیادی دارد، از جمله:
عملکرد بهبود یافته: FrankenPHP می تواند عملکرد برنامه PHP شما را به طور قابل توجهی بهبود بخشد، به خصوص در حالت ورکر.
کاهش پیچیدگی: FrankenPHP فرآیند استقرار شما را با حذف نیاز به فرآیندهای جداگانه PHP-FPM و Nginx ساده می کند.
افزایش امنیت: FrankenPHP به طور خودکار از HTTPS، HTTP/2، و HTTP/3 پشتیبانی می کند که به ایمن نگه داشتن برنامه شما کمک می کند.
ویژگی های بیشتر: FrankenPHP چندین ویژگی را ارائه می دهد که در سرورهای برنامه کاربردی PHP سنتی موجود نیستند، مانند نکات اولیه و قابلیت های بلادرنگ.
چه کسی باید از FrankenPHP استفاده کند؟
FrankenPHP یک گزینه عالی برای توسعه دهندگانی است که به دنبال افزایش عملکرد، امنیت و سادگی اجرای برنامه های PHP خود هستند. این به ویژه برای پروژه های ساخته شده با Symfony، Laravel و WordPress مناسب است.
نتیجه
FrankenPHP یک سرور کاربردی قوی و کاربرپسند است که برای PHP طراحی شده است. عملکرد و امنیت را افزایش می دهد و فرآیند استقرار برنامه های PHP را ساده می کند. اگر به دنبال راه حلی پیشرفته برای ساده کردن گردش کار توسعه PHP خود هستید، FrankenPHP یک انتخاب عالی است که هم کارایی و هم ویژگی های مدرن را ارائه می دهد.