Jump to content

  • Log in with Facebook Log in with Twitter Log in with Windows Live Log In with Google      Sign In   
  • Create Account
  • facebook
  • googleplus
  • twitter

Photo
- - - - -

Xin giúp đỡ: đoạn code php xóa file trong thư mục


  • Please log in to reply
4 replies to this topic

#1 hoian

hoian

    Tiếu Ngạo Giang Hồ

  • Member
  • PipPipPipPip
  • 429 posts

Posted 13 November 2008 - 01:48 PM

Đang lom com tập hợp 1 số script = php  thì phát sinh 1 vấn đề nan giải mà ko biết code cũng như ko search được code, post lên đây nhờ anh em giúp đỡ.
Số là php source của em là 1 đoạn script có chức năng lưu lại IP của khách ghé thăm site. Cứ mỗi người ghé site thì nó sẽ logs lại 1 Ip trong folder LOG với dạng xxx.xxx.xxx.xxx ex: 127.0.0.1
vấn đề phát sinh là nếu site có lượng truy cập lớn. thì folder log quá tải dẫn đến phải empty thủ công các file dạng IP trong đó mỗi ngày là có rồi.
em muốn hỏi có hướng nào hoặc php code nào tự động empty tất cả các file trong 1 folder theo 1 thời gian set sẵn ko?
em nhớ nhớ là có unset gì đó nhưng nó chỉ xóa 1 file chỉ định chứ ko rõ có unset *.* được ko :P
mong anh em giúp đỡ.

#2 PETER

PETER

    Super Administrator

  • Admin
  • 3,058 posts

Posted 13 November 2008 - 03:04 PM

Hoian dùng thử đoạn code này nhé, PETER code chứ chưa test :)

date_default_timezone_set('Asia/Saigon');

function empty_p($dir)
{
	foreach(glob($dir . "*") as $file) {
		unlink($file);
	}
}

$h = date("g");

if ($h == 2 || $h == 4 || $h == 6) {
$dir = "./log/";
empty_p($dir);
}
Trong đó: Thời gian được xét về múi giờ theo giờ của Việt Nam. Tạo 1 function có nhiệm vụa xóa sạch file trong 1 folder được set bằng hàm unlink(). Tiếp theo tính thời gian ($h) định dạng giờ theo kiểu 1 -> 12 giờ (g).

Sét điều kiện theo giờ, cứ vào lúc 2, 4, 6 giờ cả AM và PM (tức là 6 thời điểm trong 1 ngày) thì folder có giá trị $dir sẽ được empty (empty_p). Hoian chỉ việc thay giá trị $dir cho phù hợp, phải đúng path nhé.

Tuy nhiên khi có PHP process thì đoạn code trên mới làm việc :D Tức là hoian cứ canh đến thời điểm folder cần được empty thì truy cập vào trang web để tạo PHP process trong trường hợp những thời điểm đó không có khách truy cập.

Theo PETER được biết thì hoian đang dùng firewall bằng PHP nên hoian đừng sét khoảng thời gian $h dạng ($h >= 5 && $h <= 6) nhé vì nó không phù hợp với firewall đâu, IP được log cần phải lưu lại trên host 1 khoảng thời gian để mã PHP của firewall sét điều kiện cho các IP đó.

#3 hoian

hoian

    Tiếu Ngạo Giang Hồ

  • Member
  • PipPipPipPip
  • 429 posts

Posted 13 November 2008 - 03:44 PM

okie PT, rất cảm ơn PT giúp đỡ đoạn code trên. tuy nhiên hoian vừa nghĩ nếu làm theo hướng time zone thì đòi hỏi những điều kiện như PT nói ở trên. dựa theo code của PT giúp đỡ và hoian đang nghĩ đến readdir, opendir và substr_count để đếm số file tồn tại trong log và sẽ xóa nó nếu đến 1 giới hạn 100 hay 1000 file. như thế có vẻ nên hơn nhỉ.
thanks PT đã giúp đỡ.

#4 PETER

PETER

    Super Administrator

  • Admin
  • 3,058 posts

Posted 13 November 2008 - 03:58 PM

không cần dùng tới nhiều hàm vậy đâu hoian :D rút gọn được cái nào thì cứ rút gọn :)

function empty_p($dir)
{
	foreach(glob($dir . "*") as $file) {
		unlink($file);
	}
}
$dir = "./log/";
$num = count(glob($dir . "*"));
if ($num >= 1000 ) { empty_p($dir); }


#5 hoian

hoian

    Tiếu Ngạo Giang Hồ

  • Member
  • PipPipPipPip
  • 429 posts

Posted 13 November 2008 - 05:09 PM

hix, thanks Owner :) and thanks hoian for tested/
Good Tip For Empty File In Folder.





Similar Topics Collapse

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users