رفتن به مطلب

پاک کردن رکورد های دیتابیس قدیمی تر از یک ماه


arastooms

ارسال‌های توصیه شده

سلام و درود به همه عزیزان و اساتید بزرگ و دوست داشتنی انجمن
با توجه به این که من یه مبتدی هستم در php محبت میکنید راهنمایی بفرماید که 

چه طور میتونم رکورد هایی که در دیتابیس دارم و تاریخشون بیس از یک ماه گذشته رو با یک php پاک کنم 

داده های سوال من به قرار زیر هست 
من یک دیتابیس دارم که در اون بیش از 10000 رکورد هست و کاربران هر روز رکورد جدید اضافه میکنن
نکته ای که داره اینه که من یه ستون رو به تاریخ رکورد ها اختصاص دادم که وقتی ثبت میشه از هاست میگیرم و در اون رکورد ثبت میکنم (( دقت کنید از دستگاه یوزر نمیگیرم چون ممکنه ساعت و تاریخش درست نباشه ))
جدول من به صورت زیر هست که عکسش رو میزارم 

در ضمن ستون تاریخ و زمان من از نوع ( تاریخ ) هست و داده تاریخ و زمان رو در خودش ثبت میکنه


حالا میخام بیام و یه php بنویسم که وقتی اجراش میکنم 
بیاد و پست هایی که قدیمی تر از 1 ماه هست رو برام همه رو پاک کنه که خلوت تر بشه دیتابیس

محبت میکنید راهنمایی بفرمایید 
 

ییی.PNG

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

سلام به همه پست رو بالا میارم بعد از زمان مجاز 
محبت بفرمایید راهنمایی کنید
متشکرم

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

سلام ارسطوی عزیزم

خوبی آقا؟

ببین، شما دو تا راه داری برای این کار

یکی اینکه بیای و با php اسپلیت انجام بدی، ینی بیای و مثلا dash هایی که توی تاریخت هست رو ، ورداری و Split رو انجام بدی، حالا سال و ماه هر ریکورد رو داری

میتونی شرط بذاری اگر ماه کمتر از 12 بود و سال هم کمتر از 2010 بود مثلا، حذف کنه 
این شکلی

 

کار دیگه اینه که هر بار که اینسرت میکنی، یه query هم execute کنی

مثلا میگم، 

delete from tbl where date < 2010-10-09 0:00:00

که به جای تاریخش، تاریخ یه ماه قبلو میدی

 

حالا یه چیزی که میتونی انجام بدی

برو همین الان قبل یه ماه رو پاک کن، بعدشم هر بار که یه چیز جدید اینسرت کردی، یکی از آخر پاک کن

چون اینطور که مشخص هست، دیتا هات اونقدرا هم ممکنه برات مهم نباشن که داری فدای سبک شدنشون میکنی :DD:

اما اینی که گفتم یه مشکلی هم داره
ممکنه تو یه روز 1000 تا جدید اضافه شه، و پستی که دیروز طرف زده، 1001 باشه و حذف شه
باید یکم فک کنی روش

 

موفق باشی

اگر توی کدای php مشکلی داشتی، بگو بنویسیم برات

 

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

سلام خوبی ارسطو 

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

میتونی کرون جاب رو طوری تنظیم کنی که هر روز یه بار این php اجرا شه و رکوردای مورد نظرو حذف کنه

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

در در 1396/01/28, 12:10:00، mehrabmmp گفته است :

سلام خوبی ارسطو 

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

میتونی کرون جاب رو طوری تنظیم کنی که هر روز یه بار این php اجرا شه و رکوردای مورد نظرو حذف کنه

سلام مهران جان سپاس از نظرت قصدم همین بود دوست عزیز 
ممکنه php رو راهنمایی کنی چه طور بنویسم 
من تو php هنوز شاگردم
مرسی

در در 1396/01/28, 07:04:39، شهاب اسکندری گفته است :

سلام ارسطوی عزیزم

خوبی آقا؟

ببین، شما دو تا راه داری برای این کار

یکی اینکه بیای و با php اسپلیت انجام بدی، ینی بیای و مثلا dash هایی که توی تاریخت هست رو ، ورداری و Split رو انجام بدی، حالا سال و ماه هر ریکورد رو داری

میتونی شرط بذاری اگر ماه کمتر از 12 بود و سال هم کمتر از 2010 بود مثلا، حذف کنه 
این شکلی

 

کار دیگه اینه که هر بار که اینسرت میکنی، یه query هم execute کنی

مثلا میگم، 


delete from tbl where date < 2010-10-09 0:00:00

که به جای تاریخش، تاریخ یه ماه قبلو میدی

 

حالا یه چیزی که میتونی انجام بدی

برو همین الان قبل یه ماه رو پاک کن، بعدشم هر بار که یه چیز جدید اینسرت کردی، یکی از آخر پاک کن

چون اینطور که مشخص هست، دیتا هات اونقدرا هم ممکنه برات مهم نباشن که داری فدای سبک شدنشون میکنی :DD:

اما اینی که گفتم یه مشکلی هم داره
ممکنه تو یه روز 1000 تا جدید اضافه شه، و پستی که دیروز طرف زده، 1001 باشه و حذف شه
باید یکم فک کنی روش

 

موفق باشی

اگر توی کدای php مشکلی داشتی، بگو بنویسیم برات

 

سلام درود به استاد بی نظیر و عزیز و دوست داشتنی و مشتی انجمن 
شهاب عزیزم سلام
من خوبم رفیق و همیشه یاد میکنم ازت با آموزش های خوبت 

حقیقت اینه که در حال طراحی برنامه هستم و رکوردی اضافه نشده هنوز 
پیش بینی میکنم حد اکثر روزی 20 رکورد ااضافه کنند کاربران و این رکورد ها تاریخ مصرفی هست یعنی بعد از یک ماه دیگه به درد نمیخوره معمولا
تصمیم گرفتم نزارم دیتابیس از همین اول شلوغ بشه
حالا نظرت چی ؟
چی کار باید بکنم 
 

روزی بیست تا میشه حدودا ماهی 600 تا 
ما بگیریم 500 تا 
حالا چه طور باید موقع وارد کردن داده ها این دو محدودیت رو که گفتی اعمال کنم (( فرض کن الان خالی خالی هست دیتابیس و آماده وارد کردن داده های ارسالی کاربر))

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

بعد از یک ماه و بیست روز، دارم کد میزنم :|

اینو یه تست بکن

ببین برات کار میکنه یا نه

<?php
$con = mysqli_connect('localhost','root','','dbname');
$result = $con->query("select * from tbl");
if($result->num_rows > 0)
{
    $today_date = date(date("Y/m/d"));
    while($row = $result->fetch_assoc())
    {
        $date1 = date_create($row["date"]);//saakhtane tarikh, az tarikh db
        $date2 = date_create($today_date);//sakhtane tarikh az tarike emrooz
        $difference = date_diff($date1,$date2);//moghayese va rikhtan tedad tafavot dar $difference
        if($diffrence > 29)//agar az 29 rooz bishtar bood
        {
            $con->query("delete from tbl where id = ".$row["id"]);//hazf az date base
        }
    }
}
?>

میتونی دستی اجراش کنی

میتونی مثل کاری که مهراب(مهران چیه : )) ) گفت، یه کرون جاب درست کنی که هر شب یه بار سر ساعت 00 بیاد و این فایل رو اجرا کنه برات...

خیالت هم راحت میشه

آموزش کار با کرون جابز سیپنل cPanel - آموزش کنترل پنل cPanel

موفق باشی

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

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...