Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > เช็คไฟล์ทั้งหมดใน Folder แล้วลบทิ้งถ้าอายุมากว่า 60 นาที



 

เช็คไฟล์ทั้งหมดใน Folder แล้วลบทิ้งถ้าอายุมากว่า 60 นาที

 



Topic : 051127



โพสกระทู้ ( 39 )
บทความ ( 0 )



สถานะออฟไลน์




เราสามารถเขียน php ให้เช็คไฟล์ใน Folder นั้นทั้ง Folder แล้วให้ php ลบไฟล์ที่อายุเกิน 60 นาทีทิ้งได้ใหมครับ



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-11-03 15:00:16 By : smokietor View : 5545 Reply : 9
 

 

No. 1



โพสกระทู้ ( 1,025 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์
Twitter Facebook Hi5 Blogger

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
 


 

No. 2



โพสกระทู้ ( 39 )
บทความ ( 0 )



สถานะออฟไลน์


รันแล้วมันเออเร่อแบบนี้อ่ะครับผม

เหมือนมันเจอไฟล์ แต่มีอะไรผิดพลาด

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
 

 

No. 3



โพสกระทู้ ( 39 )
บทความ ( 0 )



สถานะออฟไลน์


เอ่อ .. เหมือนว่ามันเรียก 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
 


 

No. 4



โพสกระทู้ ( 39 )
บทความ ( 0 )



สถานะออฟไลน์


เอ่อ รู้สึกว่าจะมีวิธีของตัวเองแล้วล่ะครับ

ก่อนอื่นก็ต้องขอขอบคุณ คุณกะล่อน ด้วยนะครับที่มาชี้แนะแนวทาง แต่จากโค้ดก็พยายามศึกษาแล้วแต่บางฟังชั่นมือใหม่อย่างผมก็ค่อนข้างงง เลยไม่ประสบผลสำเร็จ

แต่ก็ได้ใช้วิธี ลอกแบบการทำงานที่คุณกะล่อนเขียนมา

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
 


 

No. 5

Guest


พี่คับของผมมันเป็นดโฟเดอคับมันว่าEror Deleting Fileor Folder คับพี่รบกวนตอบในเฟส ผม [email protected] ขอบคุนคับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-07-16 21:07:36 By : ผุ้ป่วย
 


 

No. 6

Guest


ขอบคุณมากครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-09-11 05:29:27 By : ....
 


 

No. 7



โพสกระทู้ ( 4 )
บทความ ( 0 )



สถานะออฟไลน์


หาอยู่พอดีเลย ขอบคุณมากครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-11-09 11:08:37 By : Expl0de
 


 

No. 8

Guest


Code (PHP)
echo "555";


Thanks
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-02-15 15:16:14 By : 111
 


 

No. 9



โพสกระทู้ ( 18 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณครับ กำลังหาอยู่พอดีเลยเอาไปลบไฟล cache
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2016-10-11 16:21:50 By : jinda55
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : เช็คไฟล์ทั้งหมดใน Folder แล้วลบทิ้งถ้าอายุมากว่า 60 นาที
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่