|
|
|
อยากทราบวิธีเขียนโค้ด ลบจำนวนในฐานข้อมูลออก ตามจำนวนวัน |
|
|
|
|
|
|
|
1. สร้างอีก 1 ตาราง โดยที่ตารางนี้เอาไว้เก็บวันที่ เพื่อเอาไว้เช็คว่าวันนี้มีการลบไปแล้วหรือยัง
หรือ
2. ตั้ง cron job ที่เซิร์ฟเวอร์ เพื่อให้สคริปรันวันละ 1 ครั้ง
|
|
|
|
|
Date :
2012-03-05 21:26:06 |
By :
iieszz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หรือมี วิธีอื่นอีกมั้ยครับ...
|
|
|
|
|
Date :
2012-03-06 00:22:43 |
By :
nuudew |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าเอาแบบง่ายๆ ก็ เก็บเวลาล่าสุดที่ลบไว้ที่ไหนก็ได้ครับ จะใน table หรือใน text file ก็แล้วแต่
แล้วทุกครั้งที่สคริปทำงาน ก็อ่านเวลาการเปลี่ยนแปลงครั้งสุดท้ายที่บันทึกไว้ แล้วมาดูความแตกต่างกับเวลาปัจจุบัน
หากเวลามันต่างกันเกิน 1 วัน ก็ให้รัน QUERY ที่อัพเดทค่าที่ต้องการ แล้วบันทึกเวลาปัจจุบันลงไป
นี่แบบใช้ text ไฟล์ ธรรมดาครับ
Code (PHP)
<?php
$fp = fopen('last_updated_time.txt', file_exists('last_updated_time.txt') ? 'rb+' : 'wb+'); // เปิดไฟล์หรือสร้างไฟล์ ใช้โหมด rb+ เพื่ออ่านหากมีไฟล์นี้อยู่แล้ว ใช้โหมด wb+ เพื่อสร้างหากยังไม่มีไฟล์นี้
flock($fp, LOCK_EX); // lock ไฟล์ ป้องกันการอัพเดทซ้ำซ้อน (ในกรณีที่มีการเรียกสคริปต์นี้จากหลายๆ ที่ในเวลาเดียวกัน)
$last_updated_time = fread($fp, filesize('last_updated_time.txt')); // อ่านข้อมูลในไฟล์
if (!$last_updated_time || time() - $last_updated_time > 86400) { // ถ้าไม่มีข้อมูลเพราะเพิ่งจะสร้างใหม่ หรือเวลาปัจจุบันลบกับค่าในไฟล์แล้วมากกว่า 86400 วินาที (1 วัน)
// ทำโค้ดอัพเดทฐานข้อมูลตรงนี้
ftruncate($fp, 0); // ล้างข้อมูลในไฟล์ เพื่อทำให้ตัวชี้ไฟล์กลับมาจุดเริ่มต้น และเขียนข้อมูลใหม่ลงไปได้
fwrite($fp, time()); // เขียนเวลาปัจจุบันลงไป
}
flock($fp, LOCK_UN); // ปลดล็อกไฟล์
fclose($fp); // ปิดไฟล์
?>
|
|
|
|
|
Date :
2012-03-06 08:15:44 |
By :
actioncookie |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้วครับ ขอบคุณมากครับ
|
|
|
|
|
Date :
2012-03-08 13:27:22 |
By :
nuudew |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|