پیاچپی (به انگلیسی: PHP)
یک زبان برنامهنویسی است که برای طراحی وب توسعه یافتهاست، اما میتوان از آن به عنوان یک زبان عمومی نیز استفادهکرد. تا ژانویهٔ سال ۲۰۱۳ میلادی پیاچپی بر روی ۲۴۴ میلیون وبگاه و ۲٫۱ میلیونسرور وب نصب شدهاست.[۳] این زبان در سال ۱۹۹۵ میلادی توسط راسموس لِردورف (به انگلیسی: Rasmus Lerdorf) ساختهشد و در حال حاضر توسعهٔ آن بر عهدهٔ گروه پیاچپی میباشد.[۴] در ابتدا پیاچپی از عبارت صفحهٔ خانگی شخصی (به انگلیسی: Personal Home Page) گرفته شدهبود.[۴] اما اکنون این کلمه مخففِ بازگشتی PHP: Hypertext Preprocessor به معنی پیاچپی: پیشپردازندهٔ ابرمتن میباشد.[۵]
کدهای پیاچپی توسط یک سرور وب که نرمافزار پیاچپی بر روی آن نصب باشد، تفسیر میشوند. دستورهای این زبان میتوانند به صورت مستقیم در درون کدهای اچتیامال قرار بگیرند. زبان پیاچپی از نسخهٔ ۴٫۳ به بعد قابلیت پشتیبانی ازواسط خط فرمان را نیز به امکانات خود اضافه کرد. این قابلیت میتواند برای ایجاد نرمافزارهای غیر وبی و یا نرمافزارهایی با واسط گرافیکی کاربر مورد استفاده قرار بگیرد.[۶]
پیاچپی یک نرمافزار آزاد است که تحت مجوز پیاچپی انتشار یافته است. این مجوز به دلیل قرار دادن محدودیت بر روی استفاده از عنوان پیاچپی، با مجوز همگانی گنو (GPL) سازگار نیست. پیاچپی را میتوان بر روی اکثر سرورهای وبنصب کرد. همچنین قابلیت نصب آن به صورت یک شل جداگانه بر روی تقریباً تمامی سیستمهای عامل و پلتفرمها (یا سکوها) وجود دارد.[۷] تمامی این استفادهها رایگان است.[۸]
تاریخچه
توسعهٔپیاچپی از سال ۱۹۹۴ و زمانی که راسموس لردورف تعدادی اسکریپت به زبان سی نوشت تا صفحهٔ خانگی خود را مدیریت کند، آغاز شد. این اسکریپتها که به صورت رابط دروازهٔ مشترک (به انگلیسی: Common Gateway Inteface) نوشته شدهبودند، مسئول انجام عملیاتهای سادهای مانند نشان دادن رزومهٔ راسموس و بررسی آمارهای بازدید از وبگاه او بودند.[۴] با گسترش اسکریپتها و افزودن توانایی تعامل با فرمهای وب و ارتباط با پایگاههای داده، نامصفحهٔ خانگی شخصی/مفسر فرم (به انگلیسی: Personal Home Page/Form Interpreter) یا PHP/FI برای آنها انتخاب شد. PHP/FI میتوانست برای ایجاد نرمافزارهای سادهٔ وب مورد استفاده قرار بگیرد. لردورف در ابتدا برای یافتن خطاهای این اسکریپتها و بهبود آنها، در ۸ جون سال ۱۹۹۵ میلادی اسکریپتها را با نام ابزارهای صفحهٔ خانگی شخصی نسخهٔ ۱٫۰ (به انگلیسی: Personal Home Page Tools version 1.0) تحت مجوز عمومی گنو بر روی گروه خبرییوزنت منتشر کرد.[۹] این نسخهٔ اولیه بسیاری از ویژگیهای نسخهٔ کنونی این زبان را دارا بود. متغیرها به سبک زبان پرل بودند، مدیریت فرمها وجود داشت و میشد کدها را در درون کدهای اچتیامال قرار داد. قواعد پیاچپی نیز از زبان پرلپیروی میکردند، اما سادهتر، محدودتر و ناپایدارتر بودند.[۴] با شکلگیری یک گروه برنامهنویسی و بعد از انجام تستهای فراوان بر روی نسخهٔ بتا و بازنویسی موتور تجزیهکننده، سرانجام PHP/FI نسخهٔ ۲٫۰ در نوامبر سال ۱۹۹۷ میلادی منتشر گردید.[۴]
اندی گاتسمن و زیو سوراسکی با بازنویسی موتور تجزیهکننده در سال ۱۹۹۷ میلادی، پایه و اساس نسخهٔ ۳ پیاچپی را بنیان نهادند. این ۲ نفر با همراهی لردورف با تغییر نام پیاچپی به پیاچپی: پیشپردازندهٔ ابرمتن (به انگلیسی: PHP: Hypertext Preprocessor) که یک مخفف بازگشتی است، در ماه جون ۱۹۹۸ میلادی رسماً پیاچپی نسخهٔ ۳٫۰ را منتشر کردند.[۴] بعد از این اتفاق گاتسمن و سوراسکی شروع به نوشتن هستهٔ جدیدی برای زبان پیاچپی کردند که منجر به بهوجودآمدن موتور زِند در سال ۱۹۹۹ میلادی شد. آنها همچنین شرکت زِند تکنولوژی را در کشور اسرائیل تاسیس کردند.[۱۰][۱۱]
در تاریخ ۲۲ می سال ۲۰۰۰ میلادی پیاچپی نسخهٔ ۴ که از موتور زند نسخهٔ ۱٫۰ استفاده میکرد، منتشر شد.[۴] این نسخه تا ماه اوت سال ۲۰۰۸ میلادی توسعه یافت و به زیرنسخهٔ ۴٫۴٫۹ رسید. هماکنون پشتیبانی این نسخه به پایان رسیدهاست و هیچ بهروزرسانی برای آن منتشر نمیشود.[۱۲][۱۳]
در ۱۳ ژوئیه سال ۲۰۰۴ میلادی، نسخهٔ ۵ پیاچپی که از موتور زند نسخهٔ ۲ بهره میبرد، منتشر شد.[۴] نسخهٔ ۵ ویژگیهای زیادی را به پیاچپی اضافه کرد. پشتیبانی کامل از شیء گرایی، افزونهٔ PDO (به انگلیسی: PHP Data Object Extension) (که دسترسی به بانکهای اطلاعاتی را ممکن میساخت) و بهبود بازدهی از جملهٔ این ویژگیها محسوب میشد.[۱۴] از سال ۲۰۰۸ به بعد، با پایان یافتن پشتیبانی از تمامی نسخههای قدیمیتر پیاچپی، نسخهٔ ۵ تنها نسخهٔ در حال گسترش است.
در کنار نسخهٔ ۵ پیاچپی یک نسخهٔ اصلی دیگر در حال توسعه است. با توجه به تغییرات عمدهٔ موجود در این نسخه از جمله پشتیبانی کامل از یونیکد، قرار بود این نسخه به عنوان نسخهٔ ۶ پیاچپی منتشر گردد. اما پیادهسازی پشتیبانی از یونیکد بیش از آنچه انتظار میرفت به طول انجامید. این امر باعث شد تا در مارچ سال ۲۰۱۰ میلادی، این نسخه به بخش در حال توسعه (به انگلیسی: Trunk) منتقل شد و دیگر به آن نسخهٔ ۶ گفته نمیشود.
مهمترین تغییرات این بخش جدید شامل حذف register_globals
،[۱۵] magic quotes
و safe mode
میباشد.[۱۲] دلیل حذف magic quotes
تاثیرات غیرقابل پیشبینی و دلیل حذف register_globals
خطرهای امنیتی بود که در نرمافزارها ایجاد میکرد. به جای استفاده ازmagic qoutes
برنامهنویسها میتوانند از تابع addslashes()
و یا توابع دقیقتری که برای هر پایگاه داده ایجاد شدهاند مانند mysql_real_escape_string()
که برای پایگاه داده مایاسکیوال طراحی شدهاست، استفاده کنند. توابعی که قرار است در نسخهٔ ۶ حذف شوند، از نسخهٔ ۵٫۳ به صورت توصیهنشده (به انگلیسی: Deprecated) درآمدهاند و استفاده از آنها باعث بروز هشدار در نرمافزار خواهد شد.[۱۶]
تعداد بسیار زیادی از پروژههای بزرگ و متنباز که از زبان پیاچپی استفاده میکنند، از سال ۲۰۰۸ با به وجود آمدن جنبش ابتکاری GoPHP5 به معنای برو به پیاچپی ۵ دیگر از پیاچپی نسخهٔ ۴ استفاده نمیکنند. این جنبش توسط بسیاری از توسعهدهندگان پیاچپی پشتیبانی شد تا بتوانند به گسترش استفاده از نسخهٔ ۵ پیاچپی کمک کنند.[۱۷][۱۸][۱۹]
مفسرهای زبان پیاچپی برای هر دو معماری ۳۲بیتی و ۶۴بیتی موجود میباشند. تنها استثنا سیستمعامل ویندوز است که فقط نسخههای ۳۲بیتی برای آن منتشر میشود. اما مدتی است که نسخههای ۶۴بیتی ویندوزی نیز به صورت امتحانی بر روی وبگاه پیاچپی منتشر میشوند. استفاده از نسخههای امتحانی ۶۴بیتی ویندوز برای سرورهای بزرگ توصیه نمیشود.[۲۰][۲۱]
تاریخچه انتشار
رنگ | مفهوم | وضعیت توسعه |
---|---|---|
قرمز | نسخهٔ قدیمی | بدون توسعه |
زرد | نسخهٔ پایدار | تنها بهروزرسانیهای امنیتی |
سبز | نسخهٔ پایدار | بهروزرسانی فعال |
آبی | نسخهٔ آینده | امکانات جدید |
نسخه | تاریخ انتشار | تاریخ اتمام پشتیبانی[۲۲] | یادداشتها |
---|---|---|---|
۱٫۰ | ۱۹۹۵/۰۶/۰۸ | این نسخه به صورت رسمی “Personal Home Page Tools” یا “PHP Tools” نامیده شد. کلمهٔ پیاچپی اولین بار در اینجا به کار رفت.[۴] | |
۲٫۰ | ۱۹۹۷/۱۱/۰۱ | ||
۳٫۰ | ۱۹۹۸/۰۶/۰۶ | ۲۰۰۰/۱۰/۲۰ | توسعهدهندگان از یک به چند نفر افزایش یافتند. زیو سوراسکی و اندی گاتمنس هستهٔ این نسخه را بازنویسی کردند.[۴] |
۴٫۰ | ۲۰۰۰/۰۵/۲۲ | ۲۰۰۱/۰۱/۲۳ | سیستم دومرحلهای تجزیه/اجرای پیشرفته تحت عنوان موتور زند به این نسخه اضافه شد.[۲۳] |
۴٫۱ | ۲۰۰۱/۱۲/۱۰ | ۲۰۰۲/۰۳/۱۲ | متغیرهای فوقِ سراسری(Superglobal) معرفی شدند. (GET ، $_POST ، $_SESSION و…)[۲۳] |
۴٫۲ | ۲۰۰۲/۰۴/۲۲ | ۲۰۰۲/۰۹/۰۶ | تنظیم register_globals به صورت پیشفرض غیرفعال شد. با این تغییر اطلاعاتی که از طریق شبکه ارسال میشدند، دیگر به طور مستقیم در محدودهٔ متغیرهای فوقِ سراسری قرار نمیگرفتند. این نکته مشکلات امنیتی احتمالی بسیاری از نرمافزارها را برطرف کرد.[۲۳] |
۴٫۳ | ۲۰۰۲/۱۲/۲۷ | ۲۰۰۵/۰۳/۳۱ | واسط خط فرمان یا همان CLI به این نسخه اضافه شد.[۲۳] |
۴٫۴ | ۲۰۰۵/۰۷/۱۱ | ۲۰۰۸/۰۸/۰۷ | صفحات راهنما(man page) برای درستورات phpsize و config-php اضافه شد.[۲۳] |
۵٫۰ | ۲۰۰۴/۰۷/۱۳ | ۲۰۰۵/۰۹/۰۵ | موتور زند نسخهٔ ۲ معرفی شد.[۲۴] |
۵٫۱ | ۲۰۰۵/۱۱/۲۴ | ۲۰۰۶/۰۸/۲۴ | بهبود بازدهی با معرفی متغیرهای مترجم (Compiler Variables) در موتور جدید پیاچپی.[۲۴] مدل PDO به عنوان یک رابط پایدار برای برقراری ارتباط با بانکهای اطلاعاتی معرفی شد.[۲۵] |
۵٫۲ | ۲۰۰۶/۱۱/۰۲ | ۲۰۱۱/۰۱/۰۶ | افزونهٔ فیلتر (Filter Extension) به صورت پیشفرض فعال شد. پشتیبانی از جیسَن (JSON) افزوده شد.[۲۴] |
۵٫۳ | ۲۰۰۹/۰۶/۳۰ | ژوئیه ۲۰۱۴[۲۶] | پشتیبانی از namespace، late static binding، دستور jump (نسخهٔ ضعیف شدهٔ دستور Goto) و زباله جمعکن. پشتیبانی بهتر از سیستمعامل ویندوز. پشتیبانی از اسکیواللایت نسخهٔ ۳. کتابخانهٔ Mysqlnd جایگزین کتابخانهٔ libmysql (که مسئول برقراری ارتباط با بانکاطلاعاتی مایاسکیوال بود) شد. افزونهٔ fileinfo که کارایی بهتری در مورد MIMEها دارد، جایگزین افزونهٔ mime_magic شد. افزونهٔ بینالملل (Internationalization) اضافه شد و توابع ereg از دور خارج شدند. |
۵٫۴ | ۲۰۱۲/۰۳/۰۱ | ۳ سال بعد از انتشار[۲۷] | پشتیبانی از Trait. پشتیبانی از آرایهها با فرمت کوتاه. سرور وب داخلی.[۲۸] بهبود کارایی و استفاده از حافظه به میزان کمتر. توابع حذف شده: register_globals , safe_mode , allow_call_time_pass_reference , session_register |
۵٫۵ | ۲۰۱۳/۰۶/۲۰ | ۳ سال بعد از انتشار[۲۷] | جنراتورها افزوده شدند(Generators). بهینهساز زند+ (Zend Optimizer+) افزوده شد.[۲۹] |
۵٫۶ | مشخص نشده | ۳ سال بعد از انتشار[۲۷] | قابلیت بازنویسی عملگرها (Operator Overloading). ایجاد تغییرات در GMP یا GNU Multiple Precision.[۳۰] |
از تاریخ ۲۸ جون سال ۲۰۱۱ میلادی، گروه پیاچپی برنامهای مدون برای انتشار نسخههای آیندهٔ این زبان را منتشر کرد.[۲۷] بر اساس این برنامه هر ماه یک انتشار جزئی و هر سال یک انتشار اصلی اتفاق خواهد افتاد. از هر نسخه از پیاچپی تا ۳ سال پشتیبانی میشود. تا ۲ سال تمامی بهروزرسانیها و سال سوم تنها بهروزرسانیهای امنیتی برای هر نسخه منتشر میشود.
مایاسکیوال (به انگلیسی: MySQL)
یک سامانه مدیریت پایگاه دادهها متنباز است،[۲] که توسط شرکت اوراکل توسعه، توزیع، و پشتیبانی میشود.[۲]
سرور مایاسکیوال به چندین کاربر اجازه استفاده همزمان از دادهها را میدهد.
مزیتها
مایاسکیوال از مزیتهای زیر بهرهمند است:[۳]
- مقیاسپذیری و قابلیت انعطاف
- عملکرد بالا
- در دسترسبودن بالا
- پشتیبانی از تراکنشها
- محافظت از داده
- آسان بودن مدیریت
- آزاد بودن برنامه
- پشتیبانی شبانهروزی
تاریخچه
توسعه مایاسکیوال در سال ۱۹۹۴ توسط مایکل وایدنیوس و دیوید آکسمارک آغاز شد.[۴] اولین نسخه داخلی در ۲۳ می ۱۹۹۵ عرضه شد. در سال ۲۰۰۸ سان میکروسیستمز مایاسکیوال ایبی را خریداری کرد.[۵] شرکت اوراکل سان میکروسیستمز را در ۲۷ ژانویه ۲۰۱۰ خریداری کرد.[۶]
قابلیتها
انواع داده
انواع دادههای پشتیبانی شده در مایاسکیوال شامل موارد زیر است:[۷]
|
|
موتورهای ذخیرهسازی
مایاسکیوال از چندین موتور ذخیرهسازی پشتیبانی میکند که به عنوان نوعهای جدول مختلف عمل میکنند.[۸] برخی انواع موتورهای ذخیرهسازی در برابر تراکنشها امن، و برخی دیگر در برابر تراکنشها ناامن هستند.
لیست موتورهای ذخیرهسازی مایاسکیوال شامل موارد زیر است:
- اینودیبی (به انگلیسی: InnoDB): امن در برابر تراکنشها است. از قواعد جامعیت کلید خارجی پشتیبانی میکند. از مایاسکیوال ۵٫۵٫۵ موتور ذخیرهسازی پیشفرض مایاسکیوال است.[۹]
- مایآیسم (به انگلیسی: MyISAM): قبل از نسخه ۵٫۵٫۵ موتور ذخیرهسازی پیشفرض مایاسکیوال بود.[۱۰]
- حافظه (به انگلیسی: Memory): تمام داده را به منظور دسترسی سریع در حافظه نگهداری میکند.[۸]
- ادغام (به انگلیسی: Merge): قابلیت گروهبندی کردن چندین جدول مایآیسم مشابه و ارجاع به آنها به عنوان یک جدول را میدهد.[۸]
- آرشیو (به انگلیسی: Archive): برای نگهداری دادههای آرشیوی که به ندرت به آنها ارجاع میشود.[۸]
- متحد (به انگلیسی: Federated): برای پیوند زدن چندین سرور مایاسکیوال مجزا برای ایجاد یک پایگاهداده منطقی از چندین سرور فیزیکی.[۸]
- سیاسوی (به انگلیسی: CSV): داده را در فایلهای متنی با قالب مقادیر جداشده با کاما ذخیرهسازی میکند.[۸]
- سیاهچاله (به انگلیسی: Blackhole): ورودی داده را قبول میکند، ولی آن را ذخیره نمیکند.[۸]
برنامههای ذخیرهشده
در مایاسکیوال هر برنامه ذخیرهشده شامل یک بدنه است که از عبارات اسکیوال تشکیل شده است.[۱۱] برنامههای ذخیرهشده میتوانند مقادیر خروجی داشته باشند (ایجاد شده توسط CREATE PROCEDURE) یا نداشته باشند (ایجاد شده توسط CREATE FUNCTION). اگر یک برنامه خروجی داشته باشد، از آن میتوان در پرسوجوی SELECT استفاده کرد.
کاربران سرشناس
از کاربران سرشناس مایاسکیوال به موارد زیر میتوان اشاره کرد:[۱۲][۱۳]