|
|
|
เช็คไฟล์ทั้งหมดใน Folder แล้วลบทิ้งถ้าอายุมากว่า 60 นาที |
|
|
|
|
|
|
|
Code (PHP)
$chk_time = date('Y-m-d H:i:s' , strtotime("+1 Hour")); // เซตเวลา +1Hour = 60min เอาไว้เช็คในเงื่อนไง
if ($handle = opendir('.')) { // เปิดโฟลเดอร์ปัจจุบันเพื่ออ่านไฟล์ เราสามารถเปลี่ยนเป็นโพลเดอร์อื่นได้
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if (date ("Y-m-d H:i:s", filemtime($file))>=$chk_time) { // เช็คเวลา ของไฟล์โดยใช้ filemtime ถ้ามากกว่า เวลาที่กำหนด ให้ทำการ ลบไฟล์
unlink($file); // ลบไฟล์
}
}
}
closedir($handle);
}
filemtime มันจะ Return ค่าที่เราอัพเดทไฟล์ ครั้งล่าสุดมานะครับ ไม่ใช่ วันที่สร้างไฟล์ แต่เป็นวันที่อัพเดทล่าสุด
|
ประวัติการแก้ไข 2010-11-03 15:49:57
|
|
|
|
Date :
2010-11-03 15:45:45 |
By :
adaaugusta |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รันแล้วมันเออเร่อแบบนี้อ่ะครับผม
เหมือนมันเจอไฟล์ แต่มีอะไรผิดพลาด
Warning: filemtime() [function.filemtime]: stat failed for a.rar in C:\AppServ\www\web\del.php on line 8
Warning: filemtime() [function.filemtime]: stat failed for b.rar in C:\AppServ\www\web\del.php on line 8
Warning: filemtime() [function.filemtime]: stat failed for c.rar in C:\AppServ\www\web\del.php on line 8
Warning: filemtime() [function.filemtime]: stat failed for d.rar in C:\AppServ\www\web\del.php on line 8
Warning: filemtime() [function.filemtime]: stat failed for e.rar in C:\AppServ\www\web\del.php on line 8
|
|
|
|
|
Date :
2010-11-04 19:26:51 |
By :
smokietor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เอ่อ .. เหมือนว่ามันเรียก folder ไม่ถูก path อ่ะครับ
แก้เป็นแบบนี้แล้วไม่เออเร่อครับ
if (date ("Y-m-d H:i:s", filemtime('download/'.$file))>=$chk_time) { // เช็คเวลา ของไฟล์โดยใช้ filemtime ถ้ามากกว่า เวลาที่กำหนด ให้ทำการ ลบไฟล์
unlink('download/'.$file); // ลบไฟล์.
แต่ปัญหาคือมันไม่ยอมลบไฟล์ ทั้งๆที่ Date modified ก็เกิน 1 ชั่วโมงแล้ว
วานท่านผู้รู้ชี้แนะต่อด้วยครับ
|
|
|
|
|
Date :
2010-11-04 19:39:48 |
By :
smokietor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เอ่อ รู้สึกว่าจะมีวิธีของตัวเองแล้วล่ะครับ
ก่อนอื่นก็ต้องขอขอบคุณ คุณกะล่อน ด้วยนะครับที่มาชี้แนะแนวทาง แต่จากโค้ดก็พยายามศึกษาแล้วแต่บางฟังชั่นมือใหม่อย่างผมก็ค่อนข้างงง เลยไม่ประสบผลสำเร็จ
แต่ก็ได้ใช้วิธี ลอกแบบการทำงานที่คุณกะล่อนเขียนมา
1. ตอนแรกก็หาวิธีอ่านไฟล์ใน Folder ออกมาแสดงซะก่อน
ค้นเจออันนี้ครับ ใช้ได้เลย
https://www.thaicreate.com/php/php-scandir-list-directory.html
2. ใช้วิธีตัด . และ .. ออกโดยเอาที่คุณกะล่อนโพสต์ไว้ให้ว่า if ($file != "." && $file != "..") มาใช้
3. เมื่ออ่านชื่อไฟล์ใน folder ได้แล้วก็หาวิธีเอาชื่อไฟล์พวกนี้ไปเช็คเวลาที่แก้ไขล่าสุด
ค้นเจออันนี้ ใช้ได้เลย
http://computer.todaygoods.com/php/filemtime.html
4. เอาโค้ดทั้งหมดมาประกอบกัน แล้วก็มาเรียบเรียงใหม่กลายเป็นโค้ดนี้ขึ้น
Code (PHP)
<?php
$chk_time = date('Y-m-d H:i:s' , strtotime("-1 Hour")); // เซตเวลา -1Hour = 60min เอาไว้เช็คในเงื่อนไข
$folder = "download"; // กำหนด Folder
$objScan = scandir($folder); // Scan folder ว่ามีไฟล์อะไรบ้าง
foreach ($objScan as $value) {
if ($value != "." && $value != "..") // เช็คว่าผลลัพท์ต้องไม่ใช่ . และ ..
{
$filedate = date("Y-m-d H:i:s.",filemtime($folder."/".$value."")); // เอาไฟล์ที่ได้มา เช็ควันที่แก้ไขล่าสุด
// ไม่เกี่ยวข้อง แค่แสดงผลเฉยๆ ใช้จริงให้ลบออก
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'; // แสดงชื่อภาษาไทยจะได้ถูกต้องไม่เป็นภาษาต่างดาว
echo "ชื่อไฟล์ใน Folder : $value<br>";
echo "วันที่แก้ไขไฟล์ล่าสุด : $filedate<br>";
echo "ค่าของเวลาที่ต้องการเทียบ : $chk_time<br><br>";
// จบการแสดงผลที่ไม่เกี่ยวข้อง ใช้จริงให้ลบออก
if ($chk_time > $filedate) // เช็คว่าค่าของเวลาที่ต้องการเทียบมากกว่า วันที่แก้ไขล่าสุดของไฟล์หรือไม่
{
unlink($folder.'/'.$value); // ถ้ามากกว่าก็จัดการลบไฟล์ซะ
}}}
?>
ทดลองแล้วทำงานด้วยดี เลยเอาโค้ดมาแปะไว้เผื่อใครที่ติดปัญหาค้นเจอก็จะได้โค้ดที่เป็นทางเลือกให้ใช้
|
|
|
|
|
Date :
2010-11-04 20:16:18 |
By :
smokietor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พี่คับของผมมันเป็นดโฟเดอคับมันว่าEror Deleting Fileor Folder คับพี่รบกวนตอบในเฟส ผม [email protected] ขอบคุนคับ
|
|
|
|
|
Date :
2011-07-16 21:07:36 |
By :
ผุ้ป่วย |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากครับ
|
|
|
|
|
Date :
2011-09-11 05:29:27 |
By :
.... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หาอยู่พอดีเลย ขอบคุณมากครับ
|
|
|
|
|
Date :
2012-11-09 11:08:37 |
By :
Expl0de |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
echo "555";
Thanks
|
|
|
|
|
Date :
2014-02-15 15:16:14 |
By :
111 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ กำลังหาอยู่พอดีเลยเอาไปลบไฟล cache
|
|
|
|
|
Date :
2016-10-11 16:21:50 |
By :
jinda55 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|