معيارسنجی لاراول , سيمفونی و زند

گردآوری و تالیف : عارف دیلمی
تاریخ انتشار : 01 مهر 1397
دسته بندی ها : لاراول , پی اچ پی

نوشته: Taylor Otwell  سازنده لاراول

معیارسنجی‌های زیادی برای مقایسه فریمورک‌های php در سطح وب وجود دارد که غالبا قیاس مع الفارق هستند و بیشتر به تفاوت‌های واضح بین این فرمورک‌ها پرداخته‌اند. من در این مقایسه می‌خواهم به صورت وِیژه‌ای به لاراول سیمفونی و زند بپردازم و بر روی این مورد متمرکز شوم که چرا در مقایسه این سه فریمورک با یکدیگر اشتباهاتی رخ می‌دهد.

بعد از خواندن این مقاله شما  می‌توانید در عرض 5 دقیقه سرور 2گیگابایتی DigitalOcean خود را راه‌اندازی کرده و این تست‌ها را روی این سرور برای خود انجام دهید. 

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

مسأله 

وقتی شما برای اولین بار یک پروژه سیمفونی یا زند را روی یک سرور جدید DigitalOcean پیکربندی می کنید، متوجه خواهید شوید که هیچ اطلاعاتی مربوط به سشن‌ها ارسال نشده است. در تصور زیر ملاحظه می‌کنید هیچ نوع اطلاعات کوکی در این سایت نشان داده نمی‌شود.

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

دامپ نکردن  اوتولودر بهینه سازی شده ( composer dump-autoload --optimize) یا کش نکردن پیکربندی لاراول بوسیله دستور php artisan config:cache دو اشتباه رایج هستند که رعایت آنها می‌تواند به مقدار قابل توجهی در زمان صرف شده برای راه‌ اندازی برنامه صرفه جویی کند.   

نصب

من یک سرور DigitalOcean  با php7.1  بوسیله لاراول فورج ساخته‌ام . سیمفونی را نصب می‌کنم، اتولودر کامپوسر را بهینه سازی کردم .ngix را برای سرویس دادن به سیمفونی در زمان تولید فرانت کونتروللر (App.php) پیکربندی کردم. همین‌طور مراحل گفته شده در راهنمای تنظیم محصول سیمفونی را یک به یک انجام دادم. یک به یک همین پروسه را برای زند نیز انجام دادم.

بعدا، تنظیمات opcache مربوط به php7.1 را به صورت زیر پیکربندی کردم:

opcache.enable=1

opcache.memory_consumption=512

opcache.interned_strings_buffer=64

opcache.max_accelerated_files=20000

opcache.validate_timestamps=0

opcache.save_comments=1

opcache.fast_shutdown=1

هنگام نصب لاراول، دستور config:cache Artisan را اجرا کرده سپس تنظیمات میان‌‌ابزار‌ها (middleWare)  در قسمت گروه میان ابزار در فایل app/Http/Kernel.php کامنت گذاری کردم. این تنظیمات میان ابزار مسول فعال سازی سشن‌ها نیز هستند. این تغییر به من این اجازه می‌دهد همه این سه فریمورک ها را بدون قابلیت‌ سشن آزمایش کنم. 

نتایج

بعد از پیکربندی پروژه‌ها، یک تست ساده معیارسنجی آپاچی را انجام می‌دهم که البته هر کسی میتواند آنرا برای خود بازسازی کند. 

ab -t 10 -c 10 http://server.address/

در این جا  نتایج تست‌ها را میبینیم:

بدون سشن‌ها

Laravel: 609.03 requests per second (mean)
Zend: 559.91 requests per second (mean)
Symfony: 532.97 requests per second (mean)

با سشن‌ها

Laravel: 521.64 requests per second (mean)
Zend: 484.94 requests per second (mean)
Symfony: 439.37 requests per second (mean)

 منبع

مقالات پیشنهادی

ساخت یک اپلیکیشن با لاراول و AngularJS – قسمت سوم

در ادامه ی قسمت‌های قبل این سری آموزش‌ها, در این قسمت کار API لاراول رو به اتمام می رسونیم و بخش Angular رو در قسمت بعدی توضیح می دهیم.

مقدمه‌ای بر استفاده از Vue.js در لاراول

در این مقاله میخوایم یک پروژه تستی بسازیم و در اون بتونیم یکسری اطلاعات رو به دیتابیس بفرستیم یا از دیتابیس حذف کنیم. این کار معمولی هست اما ما میخوای...

اشتراک گذاری اطلاعات در اپلیکیشن لاراول/Vue

دریافت و ذخیره سازی اطلاعات در لاراول کار پیچیده ای نیست اما چطوری میشه اطلاعات لاراول رو در Vue استفاده کرد؟ 

استفاده از REST API وردپرس در فریمورک لاراول

ورژن 4.7 وردپرس که جدیداً منتشر شده قابلیت فوق‌العاده‌ای به نام REST API اضافه کرده که قبلاً فقط با استفاده از پلاگین های خارجی ممکن بود. بنابراین ما...