PDA

View Full Version : حرفه ای: حلقه بی نهایت



mortezaaa
یک شنبه 22 مرداد 1391, 21:42 عصر
سلام
یه حلقه ای بی نهایتی دارم برای ارسال پیامک هام به شکل زیر



ignore_user_abort(true);
set_time_limit(0);

while(1)
{
// Did the connection fail?
if(connection_status() != CONNECTION_NORMAL)
{
break;
}
$ctimestamp = jmaketime (jdate('G'),jdate('i'), 0, jdate('m'),jdate('d'),jdate('Y'));
$dataq=mysql_query("SELECT `id`,`From`,`To`,`MessageBody` FROM `send` WHERE `statuss`='0' AND `returnid`='0' AND `pish`='3000' AND `SendDate`<$ctimestamp ORDER BY `id` DESC LIMIT 80");
$count_sql=mysql_num_rows($dataq);
if($count_sql=='0'){sleep(5);}
else{
کارهاي ارسال پيامک انجام ميشه
}
sleep(1);

}

اول باید بگم چطوری این دستور رو بدونه مروگر اجرا کنم
البته با تابع ignore_user_abort(true); حتی مروگر بسته شه خودش خودکار کار میکنه حتی جالب بود برام فایل پی اچ پی رو هم پاک کرد باز کار کردش و حتی فایلشو آپدیت کردم باز کار کرد
یعنی اینگار این دستور جای ذخیره میشه و خودش کارشو انجام میده تا اینکه سرور رو ریست بدم از کار بیوفته
راهی داره که سرور رو ریست نکنم کار کنه و اینکه روشی دیگه برای ساخت دستوربی نهایت داریم که مشکلم حل شه
تشکر :heart:

AbiriAmir
دوشنبه 23 مرداد 1391, 13:11 عصر
به نظر من باید با Cron Jobs تنظیم کنید که اجرا شه نه حلقه بذارید...

AbiriAmir
دوشنبه 23 مرداد 1391, 13:17 عصر
این مطلب از سایت php هست:

If you want to simulate a crontask you must call this script once and it will keep running forever (during server uptime) in the background while "doing something" every specified seconds (= $interval):

<?php
ignore_user_abort(1); // run script in background
set_time_limit(0); // run script forever
$interval=60*15; // do every 15 minutes...
do{
// add the script that has to be ran every 15 minutes here
// ...
sleep($interval); // wait 15 minutes
}while(true);
?>

AbiriAmir
دوشنبه 23 مرداد 1391, 13:20 عصر
راه برای خروجش هم خیلی ساده هست
کافیه 1 شرط بذارید مثلا اگر 1 فیلد توی db از 0 به 1 تغییر کرد شما با 1 دستور exit روند رو خارج میکنید

mortezaaa
دوشنبه 23 مرداد 1391, 13:46 عصر
تشکر
cron job متاسفانه باید هر یک دقیقه بروز میشه این طوری خیلی طول میکشه تا پیامک ها برن
پنهای باندی که برای ارسال داریم تو سرویس مگفا حداکثر 90 تاست

mortezaaa
سه شنبه 24 مرداد 1391, 00:01 صبح
ممنون میشم بیشتر کمک کنید

AbiriAmir
سه شنبه 24 مرداد 1391, 00:11 صبح
گفتم که تو حلقتون 1 شرط میذارید اگر 1 فیلد توی db تغییر کرد exit شه
مشکلتون کجاست؟

mortezaaa
سه شنبه 24 مرداد 1391, 00:13 صبح
یعنی اگه تابع ignore_user_abort(true);
false بشه تو حلقه ان دیگه بروز نمیکنه؟ خودشو؟

AbiriAmir
سه شنبه 24 مرداد 1391, 13:10 عصر
ببینید شما هرجای کد که باشید با تابع exit(); ازش خارج میشید... نیاز نیست اون رو false کنید...
فقط باید 1 شرط بذارید