نوشته: 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)
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید