تگ

PHP بایگانی - تاد

Scalable WebServer Architecture

معماری قابل گسترش برای سرورهای وب

توسط | مقالات فنی

یادتان هست نتایج کنکور سازمان سنجش تا چند ساعت بعد از انتشار نتایج به دلیل شلوغی بیش از حد، قابل دسترس نبود؟ با وجود راه حل‌های فراوان متن باز، چرا بگذاریم چنین اتفاقی مجددا تکرار شود؟

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

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

بیشتر بخوانید

شرایط رقابتی و قفل بین‌پروسه‌ای در PHP

توسط | مقالات فنی

[این مقاله در سطح «پیشرفته» و نیازمند آشنایی خواننده با زبان PHP و نرم‌افزار Redis و مفاهیم «شرایط رقابتی» و «Shared Object» است.]

کنترل دسترسی چند پروسه به منابع مشترک یا shared object ها از مسائلی است که روزانه در زندگی واقعی برنامه‌نویسان رخ می‌دهد. مدیریت این گونه از مسائل اهمیت بسیار زیادی در پیاده‌سازی نرم‌افزارها و سرویس‌های توزیع‌شده دارد. پیامد مدیریت نادرست این مسأله منجر به ایجاد شرایط رقابتی و بروز باگ‌های غیرقابل پیگیری در برنامه می‌شود. آشفته‌بازار شرایط رقابتی چیزی شبیه به رقابت سنتی بو-تااوشی در ژاپن است در آن هر فرد از تیم رقیب، به هر طریق و وسیله‌ای، موظف است دکل میانه‌ی میدان را به زیر بکشد.

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

متأسفانه زبان PHP ذاتاً دارای سازوکاری برای استفاده از راه حل‌های معمول و منطقی امروزی، مانند semaphore و mutex، را ندارد. اما این به آن معنی نیست که چنین کاری در PHP امکان‌پذیر نباشد. در ادامه‌ی این مقاله سعی شده است تا چند نمونه از راهکارهای موجود در PHP برای پرهیز از شرایط رقابتی و مزایا و معایب آنها ارائه شود.

بیشتر بخوانید

ایجاد سیستم پیش‌بینی خودکار در فرم‌های وب

توسط | مقالات فنی

aks

یکی از مهمترین عناصر مورد استفاده در صفحات وب فرم‌ها می‌باشد، که تقریباً هر برنامه‌ی کاربردی تحت وب شامل تعدادی فرم برای ایجاد و تغییر عناصر مورد نظر استاز این رو می‌توان گفت ایجاد فرم‌های کارآمد و قابل استفاده برای کاربر از اهمیت بسزایی برخوردار است.

 به منظور استفاده‌ی آسان‌تر و بهتر از فرم‌ها ترفندهایی وجود دارد که در این مقاله می‌خواهیم یکی از مهم‌ترین آنها یعنی «قابلیت پیشبینی خودکار» را معرفی کنیم.

 در این مطلب، نحوه‌ی پیاده‌سازی سیستم پیش‌بینی خودکار (Auto Complete) را با استفاده از تکنولوژی های Zend ،jQuery UI ،AJAX توضیح خواهیم دادبرای درک بهتر موضوع، لازم است تا برخی مفاهیم مقدماتی لازم برای ایجاد چنین سیستمی معرفی شودابتدا مثالی عینی را طرح کرده و سپس مرحله به مرحله پیاده‌سازی آن را تشریح خواهیم کرد.

بیشتر بخوانید