دسته بندی ها
21:51 1403/09/06

حذف یک رکورد بعد از یک زمان مشخص از دیتابیس

مشخصات سوال کننده :
کاربر : nadimi1359     امتیاز کاربر : 0     رتبه کاربر : 7062
دسته بندی : Asp.net Core Sql Server

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 700
هوش مصنوعی

پاسخ هوش مصنوعی

برای حذف خودکار رکوردها از دیتابیس پس از گذشت یک زمان مشخص، می توانید از cron jobs در سرور خود استفاده کنید. در این جا مراحل کلی که باید انجام دهید را توضیح می دهم:

1. **ایجاد یک جدول به همراه تاریخ انقضا:** ابتدا باید یک فیلد برای تاریخ انقضای هر رکورد در جدول خود ایجاد کنید. این فیلد باید تاریخ و زمان حذف رکورد را نگهداری کند.

ALTER TABLE your_table ADD COLUMN expiry_date DATETIME;

2. **اضافه کردن تاریخ انقضا به رکوردها:** هنگام اضافه کردن اطلاعات جدید به دیتابیس، باید تاریخ انقضای مورد نظر را نیز اضافه کنید.

INSERT INTO your_table (province, city, section, product_name, description, image, expiry_date) VALUES ('استان', 'شهر', 'بخش', 'نام کالا', 'توضیحات', 'path/to/image.jpg', NOW() + INTERVAL 30 DAY);

3. **نوشتن اسکریپت حذف:** یک اسکریپت PHP بنویسید که رکوردهایی که تاریخ انقضای آن ها گذشته است را حذف کند و همچنین تصاویر مربوطه را از سرور حذف کند.

connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// انتخاب رکوردهای منقضی شده
$sql = "SELECT image FROM your_table WHERE expiry_date < NOW()";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        // حذف تصویر از سرور
        if (file_exists($row['image'])) {
            unlink($row['image']);
        }
    }
}

// حذف رکوردهای منقضی شده
$sql = "DELETE FROM your_table WHERE expiry_date < NOW()";
$conn->query($sql);

$conn->close();
?> 

4. **تنظیم cron job:** در نهایت، cron job ای را تنظیم کنید که این اسکریپت را به صورت دوره ای اجرا کند. به عنوان مثال، اگر بخواهید این اسکریپت هر روز اجرا شود، می توانید خط زیر را به crontab اضافه کنید:

0 0 * * * /usr/bin/php /path/to/your/script.php

با این روش، رکوردهای منقضی شده به صورت خودکار از دیتابیس و سرور شما حذف خواهند شد.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 13:06 1403/09/07

شما برای اینکه بتونید طبق یک زمانبندی یک سری عملیات را انجام بدید باید در Sql Server خودتون Job تعریف کنید. برای این منظور باید سرویس Sql Server Agent رو فعال کنید.

تعریف عملیات زمانبندی شده در sql server

 

و سپس Job رو تعریف کنید. برای آشنایی با نحوه تعریف جاب به صورت مرحله به مرحله این لینک رو مشاهده کنید.

How to Schedule a Job in SQL Server

در مورد حذف تصویر از روت پروژه هم راه حل هایی هست ولی کمی پیچیده است.

به این پاسخ امتیاز بدهید    1
امتیاز: 1635 رتبه: 2
پاسخ دهنده : amin 10:15 1403/09/21

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

یا این که یک سرویس Hosted Service تعریف کنید که هر چند ساعت یکبار اجرا بشه و اطلاعات مورد نیاز رو حذف کنه

به این پاسخ امتیاز بدهید    0
امتیاز: 0 رتبه: 7062
1 نظر
nadimi1359 : با سلام میشه کویری مورد نظر را اینجا بنویسید

امتیاز کاربر : 0   رتبه کاربر : 7062   تاریخ ثبت : 06:06 1403/09/22
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود