PHP 8.0 منتشر شد – ویژگیها و بروزرسانیهای php 8.0
با انتشار جدیدترین نسخه PHP یعنی php 8.0 با ویژگیها و بروزرسانیهای جدیدی رو به رو هستیم. در این مقاله، ویژگیهای PHP 8.0، بروزرسانی و تغییرات اعمال شده در این نسخه را بررسی خواهیم کرد. البته یکی از مهمترین تغییرات اعمال شده در این نسخه، در نظر گرفتن کامپایلر JIT برای PHP است که میتوانید در ادامه این مقاله بیشتر با آن آشنا شوید.
در مقاله قبل درمورد PHP 7.4 و ویژگی های آن و موارد اصلاح شده صحبت شد و تا حدودی مورد بررسی قرار گرفت و دیدیم که به صورت ملموسی از لحاظ سرعت و عملکرد نسبت به نسخه های قدیمیتر مانند PHP 5 توسعه یافته است.
شما نیز هماکنون میتوانید با خرید هاست لینوکس با php 8.0 افیکس هاست، از مزایای نسخه اخیر پی اچ پی بهره ببرید و آن را بر روی هاست لینوکس ارتقا دهید:
اما وقتی صحبت از نسخه بعدی آن یعنی PHP 8.0 میشود، انتظارات کاربران افزایش مییابد، چرا که با ارائه گزینه real-time که یکی ازمهمترین ویژگیهای PHP8.0 میباشد، به افراد این قابلیت را میدهد تا در یک پروژه، نیازی به استفاده از چندین زبان برنامهنویسی مختلف نداشته باشند.
با توجه به اینکه امروزه سیستمهای real-time به طور گستردهای کاربرد یافتهاند، شبکه اینترنت نیز در حال گرایش به این ویژگی است و کاربران نیز تمایل به داشتن محتوای هر چه سریعتر دارند. چندین زبان دیگر امکاناتی جهت دستیابی به این ویژگی دارا میباشند، به عنوان مثال، جاوا اسکریپت از Node.js و پایتون از Tornado استفاده میکنند ولی php که تاکنون از این ویژگی مستثنی بود، در نسخه پی اچ پی ۸ در این زمینه تکامل خواهد یافت و ازکامپایلر JIT (Just-in-Time) استفاده خواهد نمود.
با توضیح مختصری در مورد PHP و بررسی برخی از ویژگیهای PHP 8.0 و نسخههای قبلی آن شروع میکنیم.
ویژگیهای PHP 8.0
Hypertext preprocessor به عنوان یک پروژه OpenSource کوچک شروع شد که در نهایت تکامل یافت و مردم بسیاری فهمیدند که چقدر مفید میباشد. در سال ۱۹۹۴ یک برنامهنویس کانادایی-دانمارکی، نسخه ابتدایی PHP را منتشر نمود. PHP جاسازی شده در HTML، زبان متنی سمت سرور است که در حال حاضر بسیار معروف میباشد.
زبانی که برای مدیریت متنهای داینامیک، ردیابی session، پایگاههای داده و سایتهای e-commerce استفاده میگردد. این زبان با دیتابیسهای معروف بسیاری از جمله MySQL، Oracle، PostgreSQL، Sybase، Microsoft SQL Server و Informix ادغام شده و تکامل یافته است.
PHP مخصوصا زمانی که به عنوان یک ماژول آپاچی برروی Unix کامپایل میگردد، در اجرا خوشایند است و زمانی که سرور MSQL شروع مینماید، کوئریهای بسیار پیچیدهای با نتایج بزرگی در زمان record –setting تنظیم میگردد. علاوه براین، این زبان از تعداد بیشماری پروتکل اصلی مانند IMAP، POP3 و LDAP پشتیبانی مینماید.
به عنوان یکی دیگر از ویژگیهای ۸٫۰ PHP میتوان گفت یک زبان بسیار سخاوتمند است و syntax آن مانند زبان C میباشد. هم چنین نه تنها به عنوان برنامه نویسهای پیشرفته، کار با این زبان راحت است بلکه تازه کارها نیز به راحتی میتوانند با آن کار کنند و هنوز لیست کاملی از ویژگیهای خلاقانه خود را برای برنامه نویسان حرفهای جهت توسعه حفظ نموده است.
JIT در پی اچ پی ۸
برای درک وجود JIT در PHP ابتدا مختصری توضیح نیاز است. کامپایل JIT، بهترین راه جهت بهینهسازی اجرای کدهاست. لازم به ذکر است که این روش معروف، پیشتر توسط JVM (Java Virtual Machine) استفاده شدهاست.
توسعه و رشد PHP توسط JIT بر روی بهبود آن تمرکز داشته که باعث افزایش بهبود قابل توجهی در معیارهای آن شده، اما توسعههای کوچک در برنامههایی مثل جوملا و وردپرس ثابت شدهاست. طبق کارهای انجام شده برای PHP 7.0 و پیشنهاد توسعههای مهم آن، عملکرد PHP 7.1 و PHP 7.2کم شده، زیرا مجددا برروی پیاده سازی JIT اقداماتی انجام شده است.
JIT چیست؟
در محاسبات یک راه اجرای کد کامپیوتر که در کامپایل زمان اجرا درگیر است JIT میباشد. که نام دیگر آن ترجمه داینامیک یا کامپایل run-time است که شامل source code یا ترجمه Bytecode به کد ماشین میباشد. کامپایلر JIT سیستمی را پیادهسازی نمودهاست که به صورت متناوب کدی که اجرا میگردد را پیاده سازی مینماید.
چرا JIT در نسخه PHP 8.0 معرفی شد؟
HHVM ماشین مجازی و موتور اجرایی کدهای PHP نیز از JIT استفاده مینماید. حتی در مقایسه با PHP engine اصلی که در PHP 7.0 ارائه شد سریعتر و بهتر است. به دلیل شهرت گسترده و تقاضای زیاد PHP ، سرتاسر دنیا مجددا خواستار JIT engine میباشند.
Zend و PHP آماده استفاده از JIT بوده و در انتشار PHP8.0 در نظر گرفته خواهد شد. همان طور که کد نوشته شده در PHP 5 ، بدون هیچ گونه تفییری، در PHP 7 نیز قابل اجرا است، به عنوان یک نتیجه، عملکرد دو برابر میگردد.
این مورد به دلیل تغییرات در engine نیست بلکه دلیل بهینهسازیهای دیگری در PHP 7.0 میباشد. از این رو می توان پذیرفت، آپدیت در engine عملکرد در لایههای مختلف را بهبود و توسعه خواهد داد. استاندارد HHVM، سطح عملکرد را به راحتی دوبرابر خواهد نمود یا میتوان گفت زمانی که کدی در php 7.0 نوشته میشود درنسخه PHP 8.0 نیز اجرا خواهد شد و باعث نصف شدن زمان اجرا میشود.
به عبارت دیگر، برای انجام کامپایل در طی اجرای برنامه یا runtime ، JIT یکی از بهترین راهها است و هیچ گونه سوالی در مورد کامپایل قبل از اجرا وجود ندارد، به ویژه اینکه زمان زیادی مصرف شده باشد.
از آنجایی که پیادهسازیهای فریم ورک .NET و JAVA وابسته به JIT میباشند، برای PHP نیز مشکلی وجود ندارد تا از کامپایل داینامیک بهره ببرد و عملکرد خود را به سطوح بالاتر افزایش دهد. استفاده از JIT باعث میشود تا PHP کمتر مستعد overflow و مشکلات مربوط به مدیریت حافظه شود و به طور کل مشکلاتی که مربوط به برنامه نویسی تحت زبان C میباشد از بین خواهد رفت.
برنامههای PHP چگونه کامپایل میشوند؟
در PHP یک ماشین مجازی با نام Zend VM وجود دارد. اسکریپتهای قابل خواندن توسط انسان به ساختارهایی با نام “OpCodes” که برای ماشین مجازی نیز قابل فهم است، کامپایل و ترجمه میگردند. ساختارهای کامپایل شده، OpCodes، برای ترجمه به کد ماشین درمقایسه با کد اصلی PHP سریعتر میباشند و دلیل آن این است که آن ها کدهای سطح پایین یا اصطلاحا low-level میباشند. این مرحله از اجرا در زمان کامپایل شناخته میشود و این ساختارهای کامپایل شده با نام مستعار OpCodes، توسط Zend VM درمرحله runtime اجرا میگردند.
در صورت نیاز به انجام کامپایل، JIT به عنوان یک بخش مستقل از OPcache و extension ای برای cache ساختار OpCodes اجرا میگردد. به علاوه JIT ساختارهای تولید شده را برای Zend VM به عنوان یک واسط میانی در PHP مورد عمل قرار میدهد. همچنین در جهت میزبانی کردن کد، به عنوان یک CPU (ونه یک Zend VM) ، کد ماشین وابسته به معماری را تولید مینماید.
تاریخ انتشار پی اچ پی ۸٫۰
نسخه PHP 8.0 در تاریخ ۲۶ نوامبر ۲۰۲۰ معادل ۶ آذر ماه ۱۳۹۹ منتشر شد.
بروزرسانیهای php 8.0
اخیرا گزارش شدهاست که PHP 7.4 افزونههای قابل توجهی را داشته است. در حالی که بروزرسانی به PHP 8.0 همراه با JIT که جانشین نهایی PHP7.4 میباشد شامل موارد زیر میباشد:
- ویژگی preload که به صورت قابل ملاحظهای میتواند عملکرد PHP برروی وب سرورها را توسط preloading کلاسها و توابع تا زمانی که وب سرور فعال است بهبود ببخشد تا از کامپایل دوباره یا بررسی این که آیا فایل source شناسایی شده است یا خیر بپرهیزد. بنابراین میتواند ۳۰ الی ۵۰ درصد سرعت را در آزمون اولیه افزایش دهد.
- توسعههای عملکرد دیگرPHP خارج از اسکوپ preloading اتفاق میافتد.
- FFI extention مرتبط با PHP برای واسط عملکرد خارجی بعد از این که ساخت آن برایPHP 7.3 به پایان نرسید اضافه شدهاست تا اجازه دهد کدهای PHP توابع و دیتاهای محلی مشخص شده در زبان برنامه نویسی C را فراخوانی نماید. از این رو برای ایجاد امکانات جدید این زبان برنامه نویسی، PHP FFI extension در PHP 7.4 درنظر گرفته شد.
- سرویس سیستم FPM زبان، کمی دشوار شدهاست.
- پشتیبانی PHP OpenSSL stream، پشتیبانی از TLS 1.3 و چندین تغییرات دیگر انجام شدهاست.
- Hash extension مرتبط با PHP قسمت کاملی از زبان است و نمیتواند به صورت طولانی غیرفعال باشد.
یکی از مزایای اصلی که PHP دارد این است که با هر سیستم لینوکسی سازگار است و هم چنین برروی وب سرورهای ویندوز اجرا میشود. این زبان احتمالا بر روی سیستم وبسازی برای مدتی باقی میماند. اخیرا نیز این زبان در مقام هشت در TIOBE رتبه بندی شدهاست که مشخص کننده این است که مورد توجه بسیاری از برنامه نویسان میباشد. طبق گزارش ماهانه Netcraft ، این زبان برروی وب سرور Nginx و ماکروسافت و آپاچی میتواند حضور داشته باشد.
هماکنون نسخه جدید پیاچپی ۸٫۰ را دانلود کرده و از بروزرسانیهای آن بر روی هاست لینوکس خود بهرهمدن شوید:
لینک دانلود PHP 8.0: