PDA

View Full Version : سوال: زمانبدی برای سایت



iradata
چهارشنبه 04 مرداد 1391, 02:08 صبح
سلام

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

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

البته نمیدونم که منظور خودم روو خوب رسوندم یا نه !!!!!!!!

با تشکر .

haniye70
چهارشنبه 04 مرداد 1391, 02:42 صبح
با سلام خدمت شما والله منم این سوالم بود تا جاهایی رفتم کار کرد منم برای همین مورد می خواستم

یک فیلد به اسم expire و active و $action به فیلدهای توی تیبیل اگهی اضافه کن

ابتدا کاربر یا خودت زمان انقضا را وارد میکنی بر اساس روز توی متغیر expire

فیلد active هم دیفالت 1 بده تا همگی فعال باشند

فیلد $action هم توی مشخص میکنی که حذف بشه بعد از اتمام یا غیر فعال که من d , a استفاده کردم که ولیوهای $action هستند


قسمت ورودی روز انقضا



if ($expire == "") { $expire = 0;}if ($expire != 0) { $expire = time() + ($expire * 86400);}






توی این بخش هم
$action
همون وضعیتی هست که مشخص می کنی می خوای غیر فعالش کنی یا حذفش کنی از دیتا بیس که قبلا بهش مقدار دادی





$action = filter($row['action'], "nohtml");
$action = substr($action, 0,1);
$now = time();
if ($expire != 0 AND $expire <= $now) {
if ($action == "a") {
$db->sql_query("UPDATE ".$prefix."_news SET active='0', expire='0' WHERE id='$id'");
return;
} elseif ($action == "d") {
$db->sql_query("DELETE FROM ".$prefix."_news WHERE id='$id'");
return;
}
}




امیدوارم متوجه شده باشی
موفق باشید

:لبخندساده:

haniye70
چهارشنبه 04 مرداد 1391, 02:56 صبح
اگر هم توی این عدد 86400 مشکل داری باید بگم


86400 برابر است با 60*60*24
و 60 اولي براي ثانيه هاست و 60 دومي براي دقايق و 24 براي ساعات يك روز
و 86400 برابر با ثانيه هاي يك روزه و اگر ضرب در 30 بشه ميشه ثانيه هاي يك ماه كه برابر با 2592000 ميشه.

iradata
چهارشنبه 04 مرداد 1391, 07:58 صبح
با تشکر از پاسخ شما ، اما این کار مد نظر من نبود یعنی این کار الان به صورت خودکار انجام نمیشه ، من میخوام یک کدی بنویسم که بدونه اینکه صفحه مربوط به آن باز بشه اجرا بشه !!!

من این کد روو فقط برای این کار نمیخوام و به نظرم کاربردهای زیادی میتونه داشته باشه .

MSN_Issue
چهارشنبه 04 مرداد 1391, 09:19 صبح
سلام دوست عزیز
فکر نمیکنم PHP این امکان رو داشته باشه !
احتمالا باید این کار رو با اسکریپت های دیگه مثل پرل یا پایتون انجام بدید...!

imanitc
چهارشنبه 04 مرداد 1391, 09:29 صبح
با سلام خدمت دوستان
فکر کنم منظور شما استفاده از corn job است که توسط سرور و سيستم عامل اون اجرا ميشه و راه اندازي اون يه مقداري مشکل اميدوارم اين لينکها بهت کمک کنه
http://net.tutsplus.com/tutorials/php/managing-cron-jobs-with-php-2/
http://www.thegeekstuff.com/2011/07/php-cron-job/
http://www.webmasterworld.com/forum88/6102.htm
البته داخل cpanel بخشي به اين مورد اختصاص داده شده که کارها رو ساده تر ميکنه

colors
چهارشنبه 04 مرداد 1391, 09:53 صبح
درود

شاید بشه با خود پایگاه داده کاری کرد. تو تالار mysql مطرح کن ببین جوابی میگیری

pejman_view
چهارشنبه 04 مرداد 1391, 09:54 صبح
سلام

امیدوارم که خوب باشید، شما به راحتی می توانید طبق اصولی که کاربر haniye70 (http://barnamenevis.org/member.php?260873-haniye70) گفتند کاری کنید که به نظر اتوماتیک بیاد خیلی از سیستم های بزرگ هم همینکار را می کنند، شما لازم ندارید تا قبل از اینکه کاربر (منظورم هم ادمین و هم کاربر و ...) وارد سایتتان شود آن تبلیغ را حذف کنید چون به کسی نمایش داده نمی شود. و کافی است برای خود تابعی بنویسید که به هنگام بارگزاری صفحه فقط تبلیغات معتبر نمایش داده شود. پس در نتیجه اگر سایت شما بمدت 2 هفته بازدید نداشته باشد یا در هر 1 هزارم ثانیه 1 بازدید داشته باشد آن چیزی که نمایش داده می شود فقط تبلیغات معتبر است نه آنهایی که تمام شده است. از cronjob برای اینکار استفاده نکنید باعث هدر رفتن منابع سخت افزاری سایت شما می شود و در ضمن cron job طبق یک زمان خاص اینکار را انجام می دهد مثلاً هر یک ثانیه cron job چک کند و منقضی ها را حذف کند، حالا تو یک ثانیه ممکن است 200 نفر بازدید از سایتتان بشود که شاید 1 ثانیه را در سیستم تبلیغاتی بتوان نادیده گرفت اما در یک سیستم امنیتی باعث ایجاد باگ می شود

با آرزوی موفقیت

iradata
چهارشنبه 04 مرداد 1391, 12:39 عصر
با تشکر از توجه شما به این موضوع ، اما به نظر خودم اگر این کارها به صورت خودکار در خود سرور انجام بشه خیلی بهتره :متفکر:

.fatemeh
چهارشنبه 04 مرداد 1391, 13:36 عصر
سلام
من برای تبلیغات سایت این کار رو کردم.
هر تبلیغ تاریخ انقضا داره و فیلد اکتیو.
تاریخ امروز رو میگیرم و چک می کنم تار یخ گذشته یا نه.
اگر معتبر بود که نمایش می ده و اگر تاریخش گذشته بود فیلد اکتیو اپدیت می شه و مقدار صفر میگیره.
خوب مسلما اونمایی که 1 هستند نمایش داده می شن و اونهایی که منقضی شدن با صفر شدن مقدار اکتیو نمایش داده نمشن.
کاملا هم خودبه خود با باز شدن صفحه اجرا میشه.

pejman_view
چهارشنبه 04 مرداد 1391, 16:08 عصر
سلام

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

iradata
چهارشنبه 04 مرداد 1391, 18:02 عصر
من تبلیغ روو برای مثال گفتم ، اگر من یک سیستمی داشته باشم که در آن یک وب سرویس اس ام اس وجود داشته باشه و بخوام براساس اس ام اس دریافتی یکسری نتایجی روو اس ام اس کنم اونوقت باید چه کاری روو انجام داد ؟

به نظر من این روشی که مورد تایید شماست خیلی هم جواب نمیده ولی در موارد خاص مثل نمایش تبلیغ صد در صد کاربردی هست

iradata
جمعه 06 مرداد 1391, 14:15 عصر
کسی نظری در این باره نداره ؟