• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
حذف یک رکورد توسط سیستم بعد از یک تایم مشخص
#1
بسم الله...
سلام....
چطور میشه یک رکورد خاص رو بعد از یک تایم مشخص مثلا 10دقیقه به صورت خودکار حذف کرد؟
روال کار به این صورته که در یک نرم افزار رزرواسیون تحت وب درصورتی که در مدت زمان 10یا 15 دقیقه مشتری درخواست خودش رو قطعی نکنه و عملیات پرداخت رو انجام نده اطلاعات رزرو اون کنسل و پاک بشه....

مورد بعدی اینکه بهتره این اطلاعات توی سشن ذخیره بشه یا در داخل یک رکورد؟
بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
  پاسخ
تشکر شده توسط :
#2
احتمالاً باید از event ها در دیتابیست استفاده کنی
یا cron job

راستی علیک سلام Big Grin
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط :
#3
جواب دقیق تر و کامل تر نبود؟Angel
بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
  پاسخ
تشکر شده توسط :
#4
خب رکوردهای اضافی رو بعد از یک ماه حذف کن اونم با کرن جاب دیگه!
الان مشکلت با cornjob هست؟

یه چیز دیگه اینکه درخواست ها رو با timestamp ذخیره کن .
بعد وقتی واکشی میکنی برای تائید نهایی اون دسته رو نشون بده که 15 دقیقه پایانی ثبت شده .
  پاسخ
تشکر شده توسط :
#5
نقل قول:احتمالاً باید از event ها در دیتابیست استفاده کنی
خب یعنی باید event بسازی تا سر موقع مورد نظر عملیات مورد نظرتو انجام بدن
create event ...
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط :
#6
سلام به دوستان گلم ..
فکر کنم این به کارت بیاد : http://www.sitepoint.com/how-to-create-mysql-events/
  پاسخ
تشکر شده توسط :
#7
لزوما نیازی نیست که حتما سر یک زمان دقیق رکوردهای منقضی شده حذف بشن. هست؟

میتونی برای هر رکورد یک timestamp بذاری و بعد موقعی که رکورد جدیدی در جدول مربوطه درج میشه یک کوئری هم برای حذف رکوردهای منقضی شده اجرا کنی.

البته لزومی نداره این کوئری پاکسازی در هر عملیات درج رکورد اجرا بشه و احتمالا از نظر پرفورمنس بهتره که عملیات پاکسازی رکوردهای منقضی شده در هر چند بار درج رکورد فقط یک بار انجام بشه. یا مثلا بصورت رندوم در هر چند بار یک بار.
بنده از همین روش در پروژهء خودم استفاده کردم در بخشهای مختلف. یعنی در هر جدول موقعی که یک رکورد جدید درج میشه، بصورت رندوم و با احتمال 1% سیستم پاکسازی هم اجرا میشه.

البته اگر ترافیک خیلی سنگین باشه و حجم رکوردها بالا شاید این روش زیاد بهینه نباشه و روش مستقل بهتر باشه. این چیزیه که باید تحلیل و در عمل آزمون بشه بنظرم.
  پاسخ
تشکر شده توسط :
#8
خب استفاده از کرون یا event که خیلی بهتره. بهتر نیست؟
  پاسخ
تشکر شده توسط : Reza
#9
چرا بهتره؟
اونی که من میگم نیاز به تنظیمات خارجی نداره.
یه مثال از event هم بزن چون تاحالا کار نکردم. البته فکر کنم event رو در نسخه های نسبتا جدید MySQL اضافه کرده باشن. یعنی همهء هاستها الان ساپورتش رو دارن؟
بعد این cron روی ویندوز نیست به گمانم.
بعد ساپورت event هم فکر کنم باز بستگی به پلتفرم و DBMS مورد نظر داشته باشه و حداقل سینتاکسش در محیطهای مختلف متفاوت باشه. در کل بهتره برنامه تا میشه به محیط خاصی وابسته نباشه. البته برنامهء من خودش به MySQL وابسته شده چون مثلا از دستوراتی مثل Replace که استاندارد نیستن استفاده کردم، ولی فکر میکنم این یک مورد خیلی محدود و ساده ای هست که اگر در آینده نیاز شد راحت میشه حلش کرد.
  پاسخ
تشکر شده توسط :
#10
خواستم بنویسم event یا cronjob Big Grin
event رو توی بقیه دیتابیس ها خبر ندارم چه جوریه. حداقل توی pgsql داستانی داره برای خودش
cronjob هم توی لینوکس هست. توی هاستهای ویندوزی هم میشه تعریف کرد. یه چیز داره به اسم اسکچولار یه همچین چیزی . ولی خب به هر حال داره. دیگه تقریبا همه هاستها حتی اونایی که رایگان هستن هم دارن. اینکه وابسته به یه درخواست باشیم که به نرم افزار برسه بعد اجرا بشه حالا درخولست دیر بیاد و مسائل و مشکلات خودش به نظر من که درست نیست. وقتی ابزاری هست که تقریبا همیشه در دسترس هست ( من که تا به حال ندیدم یک هاستی نداشته باشه) چرا بیاییم یه همچین کاری رو کنیم؟
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان