• اطلاعیه ها

    • Morteza

      باهم بسازیم: اطلس ووکامرس و وردپرس   14/07/96

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

ایجاد تاخیر زمانی در اجرای یک حلقه

5 پست در این موضوع قرار دارد

آیا میشه یک حلقه while رو که باید n بار اجرا بشه رو کاری کرد که بعد از هر اجرا 30 ثانیه صبر کنه و بعد دوباره اجرا بشه .

0

به اشتراک گذاری این پست


لینک به پست

ارسال شده در (ویرایش شده)

در خط ششم تابع sleep عمل تاخیر را انجام میده ، ورودی برابر با تعدا ثانیه های ایجاد تاخیر


<?php
$i=0
while($i < 10)
{
echo '$i = '.$i.'<br/>';
sleep(30);
$i++
}
?>

ویرایش شده در توسط MrProgrammer
3

به اشتراک گذاری این پست


لینک به پست

در خط ششم تابع sleep عمل تاخیر را انجام میده ، ورودی برابر با تعدا ثانیه های ایجاد تاخیر


<?php
$i=0
while($i < 10)
{
echo '$i = '.$i.'<br/>';
sleep(30);
$i++
}
?>

تشکر . اما یک سوال ؟

هنگام لود کد مرورگر چیزی رو نشون نمیده همینطور درحال لود شدن هست و بعد ازمثلا الان 10*30=300 ثانیه کل جواب رو نشون میده !!!

1. آیا اینطوری به سرور فشاری وارد نمیشه ؟

2. نمیشه کاری کرد که هر جواب رو نشون بده و بعد همینجور به ترتیب دستور رو اجرا کنه ؟

درحقیقت من این حلقه رو میخوام برای ارسال ایمیل میخوام . خوب اگر مدام توی این 300 ثانیه سرور زیر بار لود باشه که خیلی بده مگر اینکه پشت پرده چیز دیگه ای باشه ؟ یعنی سرور زیر بار نباشه تا بازه ی بعدی ؟

0

به اشتراک گذاری این پست


لینک به پست

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

در ثانی با هر بار اجرا شدن حلقه یکی از ایمیل هاارسال میشه اما چون کد php تا انتها جلو نرفته و تمام کد های یک صفحه اجرا نشدند خروجی در مرورگر شما نداره ، برای اینکه در مرورگر شما خروجی داشته باشه در پایان اجرای هر حلقه میتونید از تابع flush استفاده کرد (اطلاعات بیشتر در مورد این تابع : تابع flush) مثلا در حلقه while به شکل زیره :


<?php
$i=0
while($i < 10)
{
echo '$i = '.$i.'<br/>';
sleep(30);
$i++;
flush();
}
?>

3

به اشتراک گذاری این پست


لینک به پست
در در ۱۳۹۳/۹/۶ ه‍.ش. at 08:07، حسین شفیعیان گفته است :

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

در ثانی با هر بار اجرا شدن حلقه یکی از ایمیل هاارسال میشه اما چون کد php تا انتها جلو نرفته و تمام کد های یک صفحه اجرا نشدند خروجی در مرورگر شما نداره ، برای اینکه در مرورگر شما خروجی داشته باشه در پایان اجرای هر حلقه میتونید از تابع flush استفاده کرد (اطلاعات بیشتر در مورد این تابع : تابع flush) مثلا در حلقه while به شکل زیره :

 

 

<?php
$i=0
while($i < 10)
{
echo '$i = '.$i.'<br/>';
sleep(30);
$i++;
flush();
}
?>

 

ممنون دنبال همین بودم ولی با این تفاوت که حلقه هر بار در بازه های زمانی متفاوت توقف کنه مثلا یک بار 3 ثانیه بار دیگه 5 ثانیه و یک بار هم 6 ثانیه متوقف بشه و بعد همین روال ادامه داشته باشه

0

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری