تعداد بازدید: 29

پردازش در پس زمینه در وردپرس

پردازش در پس زمینه (Background Proccesssing ) در وردپرس زمانی نیاز می شود که یکی از پردازش ها آنقدر طولانی باشد که زمان اجرای آن از max_execution_time در سرور بیشتر شود.

با استفاده از کد زیر می توانید در تنظیمات پی اچ پی برای فایل جاری حداکثر زمان اجرای اسکریپت را تعیین کنید:

عدد 0 به معنی زمان نامحدود تا پایان اسکریپت می باشد که به صورت پیش فرض در اکثر سرور ها و هاست ها عدد 30 در واحد ثانیه می باشد.

برای پیاده سازی پردازش پس زمینه در وردپرس دو راهکار در اختیار داریم :

  • استفاده از درخواست بازگشتی Ajax در وردپرس
  • استفاده از کتابخانه WP Background Proccessing

درخواست بازگشتی Ajax

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

در این روش ما در اسکریپت جاوا اسکریپت خودمان یک تابع بازگشتی با نقطه اتمام خاص طراحی می کنیم. نقطه اتمام از سرور به response می آید و در آن ما می توانیم چک کنیم که آیا درخواست تمام شده است یا خیر و با توجه به آن دوباره درخواست را اجرا کنیم یا تمام کنیم.

نکته مهم : در این روش باید کاربر روال انجام پروسه رو ببیند و این روش برای آن دسته از پردازش هایی مناسب است که می توان آن را به چند پردازش تقسیم بندی کرد. به طور مثال می خواهیم یک سری داده را در پایگاه داده درون ریزی کنیم.به صورت کلی هر موقع پردازشتون به تابع بازگشتی میومد از این روش استفاده کنید.

برای این منظور باید متغیر های زیر را به تابع داد :

  • data : داده های قابل پردازش که قراره هر قسمت درون ریزی بشه.
  • progress : چه مقدار از پردازش پیش رفته است.
  • status : وضعیت اتمام پردازش.

گام اول : فرستادن داده ها به اسکریپت برای اجرای تابع بازگشتی جاوا اسکریپتی :

گام دوم : اجرای تابع بازگشتی جاوا اسکریپت با استفاده از داده  هایی که در اجرای ابتدایی به آن داده شده است:

به هنگام کلیک روی یک دکمه این تابع به ازای مقادیر اولیه ای که به آن داده شده است اجرا می گردد. پس از آن تا پایان یافتن اسکریپت ( بازگشت مقدار true ) تابع جاوا اسکریپتی به ازای مقادیر بازگشتی از سرور اجرا می گردد.

گام سوم : پیاده سازی دریافت درخواست و ارسال پاسخ در سرور.

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

مقدار offset باید با توجه به تعداد کل پست های posts_array و مقداری که در هر بار درخواست درون ریزی میشه مقدار دهی بشه و با استفاده از css خط پیشروی رو نمایش بده.

WP Background Proccessing

یک کتابخانه برای اجرای اسکریپت ها در پس زمینه وردپرس می باشد. به گونه ای که هر اسکریپت یک کلاس extends شده از کلاس WP_Background_Process می شود و هر زمان که نیاز بود این کلاس با استفاده از داده های ورودی خود در پس زمینه اجرا می گردد.

برای استفاده از این کتابخانه باید آن را ابتدا نصب کنید :

در مرحله اول باید اسکریپت طولانی خود را در متد task تعریف کنیم. این متد می تواند مقادیری را دریافت کند. متد task اسکریپت طولانی ما رو پر می کنه و متد complate پس از پایان یافتن task اجرا میشه.

در مرحله بعد باید این اسکریپت را در جایی که لازمه ( مثلا یک هوک خاص ) این کلاس رو شئ بسازیم و با استفاده از متد push_to_queue اسکریپت طولانی رو به صف اجرا ببریم. به عنوان ورودی هم می تونیم مقادیری رو براش ارسال کنیم. در پایان وقتی پروسه ها رو به شئ پوش کردیم باید با استفاده از متد save اون ها رو ذخیره کنیم.

در نهایت در هوک مورد نظر ( یا پس از اتمام پوش بعد از ذخیره ) باید اسکریپت های طولانی رو به اجرا در بیاریم.

در مثال بالا ما در زمان template_redirect شئ رو ساختیم و اسکریپت ها رو پوش کردیم و در shutdown اون ها رو به اجرا در آوردیم.

مطالب مشابه

ساختار پلاگین ووکامرس

پلاگین ووکامرس ( Woocommerce ) یک پلاگین برای پیاده سازی سیستم فروش محصول در بستر وردپرس می باشد. اگر ساختار پیش فرض...

آموزش نکات و تکنیک های برنامه نویسی وردپرس

cron job در وردپرس

مفهوم cron job در وردپرس یعنی انجام یه کار (job) به صورت سیکل زمانی (intreval) با زمان شروع مشخص(start time). به طور...

آموزش نکات و تکنیک های برنامه نویسی وردپرس

معرفی تابع get_posts در وردپرس

در این مقاله میخوایم که تابع get_post و get_posts رو معرفی کنیم . این تابع کار کوئری هایی که با شی WP_Query می گرفتیم ....

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای پردازش در پس زمینه در وردپرس

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *