خدمت همه شما کاربران وبلاگم که همگی جز دوستان خوب و زحمت کش من هستید سلام مجدد عرض میکنم

چند وقتی که نمی تونستم در وبلاگم پست جدیدی بزارم و بازهم از شما و گوگل عزیز عذرخواهی میکنم

شمارو نمیدونم ولی گوگل عزیز حتما از دستم دلخوره ، به هرحال فرصتشو واقعا نداشتم

خوب دوستان ، میخوام درباره پردازش درخواست ها در php یکم توضیح بدم و شمارو با یک تابع نیز آشنا کنم

همونطور که میدونید ما در برنامه های تحت وب برای نمایش و دریافت اطلاعات از عناصر و تگ های html استفاده میکنیم مثلا برای نمایش یک متن از تگ <p> و برای دریافت یکسری داده ها از کاربران هم معمولا از عنصری بنام فرم استفاده میکنیم.

در شرایط عادی هر کاربر که وارد سایت ما میشه و فرمی را در سایت پر میکنه و دکمه ارسال رو میزنه ، این اطلاعات به یک فایل php ارسال میشه و فایل php اطلاعات رو اعتبارسنجنی میکنه و هر عملیاتی که ما تعیین کردیم انجام میده که این عملیات ممکنه ذخیره داده های دریافتی در دیتابیس باشه یا هر چیز دیگه

فرض کنید ما وقتی کاربر فرمی رو به یک فایل ارسال میکنه ، یک سشن را در فایل php دریافت کننده استارت زدیم که در این حالت چون اطلاعات سشن ها درون فایل بر روی هارد دیسک کامپیوتر سرور ذخیره میشه بنابراین از نقطه استارت سشن تا آخرین خط دستورات اون اسکریپت ، فایل سشن در وضعیت write قرار میگیره و امکان نوشتن اطلاعات دیگه داخلش توسط همون کاربر نیست که این کار باعث میشه تا در مواقعی که یک کاربر چندین درخواست رو به سرور ارسال میکنه بخاطر باز شدن سشن توسط اولین درخواستش ، پاسخدهی و پردازش درخواست های بعدی اش که همزمان ارسال کرده به تاخیر بیفته

شاید تا زمانی که یک مثال نیاوردم یکم براتون گیج کننده باشه

فرض کنید شما یک صفحه ای طراحی کردید که شامل چند تا ویجت هست و این ویجت ها در هر دقیقه بوسیله ایجکس درخواستی رو به یک فایل php ارسال میکنن تا مقادیر جدیدی رو از سرور بگیرن و در داخل باکس ویجت نشون بدن

افزایش سرعت php

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

حالا برای اینکه ما بتونیم این روند رو بهینه تر کنیم و سرعت پاسخدهی رو افزایش بدیم بایستی خودمون بصورت دستی بعد از اینکه در طی هر هر درخواست کارمون با سشن تموم شد سشن رو ذخیره و ببندیم تا از حالت write در بیاد و درخواست های بعدی هم بتونن در سشن مقداری ذخیره کنن و برای اینکار فقط کافیه بعد از اتمام کارمون با سشن اونو با استفاده از تابع زیر ببندیم تا باعث معطلی درخواست های بعدی که نیاز به نوشتن در فایل سشن دارند نشه

پس خیلی راحت برای بستن سشن ، بعد از استفاده از اون ،  تابع زیر رو می نویسم :

<?php
session_start();
$_SESSION['username'] = "Mehdi Hesami";
session_write_close();
?>