Tìm và xóa file thừa trong PHPBB3

Chủ nhật - 18/11/2007 20:51
Bài toán đặt ra: Làm sao xóa các file thừa & bù file thiếu trong hệ thống PHPBB3 mà hiện CSDL của PHPBB3 không thể phát hiện ra? Bạn hãy thử giải pháp này xem sao.
Đây là giải pháp của NEDKA ở vinabb

Ý tưởng là, phải so sánh filename của những file còn trong DB và những file có trong thư mục files/ là sẽ biết được những "file rác" có trong thư mục files/ (có trong files/ mà không có trong DB, nghĩa là không hề được sử dụng đến. Cái này do rất nhiều nguyên nhân mà nó có, ví dụ: thành viên upload file trong khi đang soạn dang dở, rồi bỏ không gửi ; cấp phép sai thư mục files, dẫn đến không thể xóa file trong thư mục vật lí...)

Đầu tiên là tạo danh sách những file có trong DB (đây là tất cả những file đang sử dụng - active). Tạo một file PHP như sau:
Code:
<?php

define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

$sql = 'SELECT physical_filename
   FROM ' . ATTACHMENTS_TABLE . '
   WHERE is_orphan = 0
   ORDER BY physical_filename ASC';
$result = $db->sql_query($sql);

while ($row = $db->sql_fetchrow($result))
{
      echo($row['physical_filename'] . '<br />');
}

?>

Upload lên host rồi chạy nó từ trình duyệt, copy tất cả kết quả xuất ra rồi save thành file FILE_DB.txt để trên máy.

Tiếp theo, tạo tiếp file php khác để xuất ra tất cả các file hiện có trong thư mục files/ (mà nhiều cái chắc chắn sẽ không còn trong DB - nghĩa là "file rác"). Mấu chốt là do các file đính kèm của phpBB sau khi upload đã không còn phần mở rộng (click từ trình duyệt nó sẽ hiểu nhầm là thư mục con - do không có đuôi tập tin đi kèm), do đó phải dùng hàm scandir - chỉ có trong PHP5 để hiện tên thực:
Code:
<?php

define('IN_PHPBB', true);
$phpbb_root_path = './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);

$dir    = $phpbb_root_path . 'files/';
$files = scandir($dir);

foreach ($files as $files_list => $file_ary)
{
   printf($file_ary . '<br />');
}

?>

Upload lên host, chạy từ trình duyệt rồi copy kết quả thành file FILE_DIR.txt để trên máy.

Cuối cùng, dùng một phần mềm so sánh văn bản, như WinMerge để so sánh 2 file này, bên trái là file FILE_DB.txt, bên phải là file DB_DIR.txt:

WINMERGE.gif
 
KẾT QUẢ KHI SO SÁNH:
Nếu chỉ có bên phải, không có bên trái: nghĩa là những cái bên phải này là file rác không hề sử dụng tới, hãy lưu lại tên nó rồi dò tìm và xóa đi (xóa từ công cụ quản lý file trong hosting, qua FTP...).
Nếu chỉ có bên trái, không có bên phải: trường hợp này nghĩa là có lỗi, 1 file có trong DB (phần hồn) nhưng lại khộng có trong thư mục files (phần xác), thành ra nếu ai đó click vào link download của nó sẽ báo lỗi "Not found". Hãy tra tìm theo tên đó và upload lại.

Nguồn tin: Nedka@vinabb

Tổng số điểm của bài viết là: 0 trong 0 đánh giá

Click để đánh giá bài viết

  Ý kiến bạn đọc

Giới thiệu về Công ty cổ phần phát triển nguồn mở Việt Nam

Công ty cổ phần phát triển nguồn mở Việt Nam (VINADES.,JSC) là công ty mã nguồn mở đầu tiên của Việt Nam sở hữu riêng một mã nguồn mở nổi tiếng và đang được sử dụng ở hàng ngàn website lớn nhỏ trong mọi lĩnh vực. Wbsite đang hoạt động chính thức: http://vinades.vn/ Ra đời từ hoạt động của tổ chức...

Thăm dò ý kiến

Bạn biết gì về NukeViet 4?

Tin xem nhiều
Thống kê truy cập
  • Đang truy cập180
  • Máy chủ tìm kiếm8
  • Khách viếng thăm172
  • Hôm nay2,038
  • Tháng hiện tại744,148
  • Tổng lượt truy cập70,529,997
  • Cộng đồng NukeViet vinh dự có 1 đơn vị tập thể và 1 cá nhân nhận bằng khen của Hội tin học Việt Nam

    Ngày 10/01/2021, tại sự kiện mừng sinh nhật lần thứ 9 CLB Phần mềm tự do nguồn mở Việt Nam (VFOSSA), Cộng đồng NukeViet đã có 1 cá nhân và 1 đơn vị tập thể được Hội tin học Việt Nam (VAIP) trao tặng bằng khen. Đây là niềm vinh dự lớn khi những đóng góp xuất sắc của cá nhân và tập thể trong Cộng đồng NukeViet được ghi nhận và vinh danh.
  • Chương trình đào tạo chuyên sâu lập trình viên NukeViet

    Với mục đích mở rộng cộng đồng lập trình yêu thích mã nguồn mở NukeViet. Công ty VINADES chủ quản phần mềm mã nguồn mở đã mở ra chương trình đào tạo lập trình viên online cho những ai yêu thích NukeViet
  • Powtoon phần mềm tạo video sinh động, hấp dẫn

    Powtoon được biết đến là một trong số những công cụ tạo video sinh động, hấp dẫn được nhiều người dùng ưa chuộng. Với thư viện template đa dạng, sinh động giúp bạn tạo nên những video, slide chất lượng cho mình.
  • Olympic Tin học Sinh viên năm 2020 - hạng mục Phần mềm nguồn mở diễn ra thành công tốt đẹp

    Ngày 10/12/2020, Cuộc thi Olympic Tin học Sinh viên toàn quốc năm 2020 (OLP), hạng mục Phần mềm nguồn mở chính thức được diễn ra tại Đại học Cần Thơ. Mã nguồn mở NukeViet vinh dự được lựa chọn làm nội dung thi của hạng mục này. NukeViet Core Team cũng được lựa chọn làm Ban Giám khảo chấm thi.
  • Google font - Làm cho web đẹp hơn, nhanh hơn và mở hơn

    Google font, dự án cung cấp một bộ sưu tập các phông chữ cho các nhà thiết kế web với giấy phép nguồn mở, cách sử dụng trực quan và mạnh mẽ. Cho phép sử dụng online mà không cần tải về và lưu trữ trên hosting của website
  • Bạn có cần nhân viên SEO không?

    Google không sử dụng từ SEOer để chỉ một người làm SEO mà gọi tên công việc và người làm công việc đó đều là SEO. Google mới đây đã có 1 bài phân tích việc một người làm kinh doanh liệu có cần nhân viên SEO không và hướng dẫn cách tuyển chọn nhân viên SEO. Mời các bạn cùng xem!
  • Cẩm nang SEO - Tài liệu chính thức của Google

    Nhiều bạn bỏ tiền học SEO, theo học các khóa SEO tại các trung tâm đào tạo với nhiều tips, tricks, mẹo, bí kíp... rất thiếu căn cứ nhưng lại chưa từng đọc "giáo trình chính thống" mà Google phát hành. Bqgt NukeViet thấy cần phải cho các thành viên cộng đồng NukeViet cái nhìn chính thống về SEO, chúng tôi quyết định cảnh báo các bạn đang bắt đầu bước chân vào lĩnh vực làm SEO nên đọc các tài liệu chính thống của Google trước tiên, vì mọi tips, tricks, mẹo, bí kíp... mà các bạn học bên ngoài chỉ là những thứ không chính thống, có thể bị Google thay thế, thậm chí là "phạt" bất cứ lúc nào.
 
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây