حذف یک رکورد بعد از یک زمان مشخص از دیتابیس
با سلام و عرض ادب خدمت همه عزیزان من یک سری اطلاعات را که شامل اسم استان - شهر و بخش و نام کالا و یک سری توضیحات به همراه عکس کالا را در بانک ذخیره میکنم حالا می خوام بعد از گذشت یک مدت مشخص این اطلاعات بصورت اتوماتیک از بانک حذف شود و عکس کالا هم از روت سایت همزمان حذف شود برای انجام اینکار باید چیکار کنم.
پاسخ هوش مصنوعی
برای حذف خودکار رکوردها از دیتابیس پس از گذشت یک زمان مشخص، می توانید از 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
با این روش، رکوردهای منقضی شده به صورت خودکار از دیتابیس و سرور شما حذف خواهند شد.
شما برای اینکه بتونید طبق یک زمانبندی یک سری عملیات را انجام بدید باید در Sql Server خودتون Job تعریف کنید. برای این منظور باید سرویس Sql Server Agent رو فعال کنید.
و سپس Job رو تعریف کنید. برای آشنایی با نحوه تعریف جاب به صورت مرحله به مرحله این لینک رو مشاهده کنید.
How to Schedule a Job in SQL Server
در مورد حذف تصویر از روت پروژه هم راه حل هایی هست ولی کمی پیچیده است.
میتونید از quartz استفاده کنید برای پیاده سازی جاب های زمانبندی شده
یا این که یک سرویس Hosted Service تعریف کنید که هر چند ساعت یکبار اجرا بشه و اطلاعات مورد نیاز رو حذف کنه
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2