تابع sleep در php

  • آپدیت شده در تاریخ

تابع sleep در php

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

تابع sleep در php فقط و فقط یک ورودی اجباری برای یک دوره زمانی را برای استاپ می پذیرد . این پارامتر باید با data type (نوع داده ای) عددی باشد و این مقدار عددی برحسب ثانیه است .

تابع sleep در php

بعضی زبان های برنامه نویسی مثل جاوا اسکریپت ،  تابع مستقیمی برای sleep یا به اصطلاح به خواب رفتن برنامه ندارند . افراد ممکن است همچنین عملکردی را توسط یک حلقه ، درخواست XMLHTTP (همان ajax و در سمت سرور با php عملی کنند) و غیره … .

البته با جی کوئری این کار بسیار راحت است . ! و حتی بعضی مواقع افرادی که تازه با php آشنا شدند ممکن است با یک حلقه زمان اجرای دستورات بعدی را برای چند ثانیه به وقفه بندازند . این کار بسایر می تواند زمان بر باشد ، مثلا استفاده از توابع date/time برای دریافت timestamp فعلی و ست کردن آن به عنوان لیمیت اجرای حلقه و …. . ولی در اینجا ما به سادگی از تابع sleep در php استفاده می کنیم .

مثال : تابع sleep در php

خب یک مثال از اجرای برنامه با وقفه دادن به آن با تابع sleep در php را ببینیم.

در اسکریپت php بالا ، از یک تابع برای ساخت اعداد تصادفی (random) استفاده کردیم ، تابع rand() ، بطور اتفاقی یک عدد بر ثانیه انتخاب می کند  و بعد آن را به تابع sleep پاس می دهد . در این مثال محدوده (range) مشخص شده بین ۵ تا ۱۰ ثانیه برای تابع rand() است .

قبل از فراخوانی تابع sleep با مدت زمان تصادفی انتخاب شده ، ما تابع date را قبل و بعد از آن تکرار کردیم  . اسکریپت زمان را در فرم (ساعت : دقیقه : ثانیه ) نشان می دهد . بعد از احرای تابع sleep() خواهیم دیدی که چند ثانیه وقفه توسط تابع Sleep ایجاد شده است .

توابع مرتبط با توقف اجرای برنامه در php

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

این توابع در زیر لیست شده اند :

  • تابع usleep() – این تابع مقدار را به صورت میکروثانیه (۱۰ به توان ۶) به جای ثانیه در تابع sleep() در php می پذیرد
  • تابع time_nanosleep() – برخلاف تابع sleep() و usleep() ، این تابع زمان را برحسب نانوثانیه قبول می کند .
  • تابع time_sleep_until() – این تابع مقدار timestamp را با نوع داده ای float (اعشاری) برای ایجاد وقفه دریافت می کند . تا زمانی که timestamp به صورت اعشار است ، می توانیم این مقدار را میکروثانیه ارسال کنیم.

احتیاط :

موارد زیر را هنگام استفاده از تابع sleep در php به خاطر داشته باشید. نکته های زیر هنگام اجرای تابع sleep در php که با خطاهایی مثل warning notice مواجه شدید بسیار به شما کمک خواهند کرد .

  • اگر یه مقدار منفی را به تابع sleep در php پاس بدید ، در اینصورت یک خطای warning را در مرورگر نمایش میدهد

برای آشنایی با انواع خطاها در php کلیک کنید.

  • همچنین ارسال آرگومان با یک data typeی بجز integer (عددی) می تواند باعث خطایی مثل زیر شود .

  • در هنگام استفاده از تابع time_sleep_until() ، اگر یک timestamp آینده که هنوز نرسیده است ، وارد کنیم ، در اینصورت یک خطای warning را چاپ می کند.

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

موفق و پیروز باشید .

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۴)

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

  1. سینداد ۱۰ آذر ۱۳۹۹

    سلام
    من توی زبان PHP تازه کارم
    برای ربات نویسی از این زبان استفاده میکنم
    به عنوان مثال میخوام با ربات به ۱۰۰۰ نفر پیام بفرستم
    برای این کار از حلقه For استفاده کنیم
    ولی به علت محدودیتی که خود تلگرام گذاشته نمیشه یکدفعه از پیام را ارسال کرد و باید هر ثانیه فقط ۱ پیام را ارسال کنم تا رباتم مسدود نشه
    داخل حلقه For دستور (۱)sleep را میذارم
    بعد از ارسال ۲۰ یا ۳۰ پیام ربات قاطی میکنه و دوباره حلقه برمیگرده از اول درصورتی که وقتی sleep داخل حلقه نباشه برنامه هیچ مشکلی نداره و فقط ربات مسدود میشه
    کسی میدونه مشکل از چیه
    ممنون میشم

    پاسخ
    1. حسن شفیعی ۱۰ آذر ۱۳۹۹

      سلام. داخل هاست اشتراکی این عملیات معمولا به اتمام نمیرسه چون محدودیت زمانی اجرای اسکریپت روی ۶۰ثانیه هست و عملیات قطع میشه یا باید با صف بندی و کرون جاب هر بار مثلا ۵۰۰تا پیام بفرستید یا اینکه از هاست مجازی استقاده کنید که امکان تغییر این محدودیت ۶۰ثانیه رو داشته باشید.

      پاسخ
      1. سینداد ۱۲ آذر ۱۳۹۹

        ممنونم

        پاسخ
  2. محمد ۱۰ مهر ۱۳۹۹

    عالی بود

    پاسخ
دوره های آموزشی