Cần tìm thuật toán bulk insert tag trong wordpress

Discussion in 'Hỏi Đáp Kỹ Thuật' started by Hoa Mãn Lâu, Apr 1, 2019.

  1. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    Tình hình là e đang cần insert 1 số lượng tag lớn vào bài viết của wp mà nó insert lâu quá. Có pác nào có thuật toán nào insert nhanh xíu ko ạ
     
  2. wpresources

    wpresources Bang Chúng

    Dùng putty import pro biết rồi,nếu viết trong code thì pro có thể dùng executeBatch nó sẽ nhanh hơn nhiều so với insert từng dòng lẻ
     
    tienganhtiengem likes this.
  3. console

    console Bang Chúng

    Insert thẳng vào db bác
    Nhưng có 1 cách còn nhanh hơn đó là đừng có insert chi co nó nặng db. Chỗ tag đó load file txt đi cho nhanh :D.
     
  4. tienganhtiengem

    tienganhtiengem Sơ Nhập Giang Hồ

    Chắc DB của em toàn insert dòng lẻ nên nặng lắm
     
  5. wpresources

    wpresources Bang Chúng

    Insert dòng lẻ thì tốc độ chậm hơn chứ liên quan gì đến nặng hả em {flame}
     
  6. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    Vấn đề là để tạo ra 1 tag trong wp phải insert tới 3 bảng lận và ràng buộc chặt chẽ nên ko insert nhanh dc. Xài code mặc định của wp thì lâu quá. Code em xài insert rút ra từ core của wp đây ạ
     
    tienganhtiengem likes this.
  7. console

    console Bang Chúng

    Vậy lâu đúng rồi, connect thẳng tới db nó viết đoạn script bằng php, check exist bằng slug chẳng hạn rồi run mới nhanh được bác. Mà bác insert làm gì cho nặng, load file đi cho nhanh
     
    tienganhtiengem likes this.
  8. money

    money Hương Chủ

    - login wp admin
    - open post cần edit/insert tags
    - copy & paste new tatgs vào
    - click save/update
    - done

    EASY !!!

    P/S: nếu có 1 triệu posts cần insert/update tags thì làm 1 triệu lần
     
  9. console

    console Bang Chúng

    Thêm là nhớ quay 2 tay cho đều nữa chứ anh
     
  10. money

    money Hương Chủ

    Anh chỉ cung cấp thuật toán theo yêu cầu pé Hoa chứ không chỉ quay tay :D
     
    console likes this.
  11. wpresources

    wpresources Bang Chúng

    Mình chưa làm nhưng ý tưởng cho việc pro cần như sau

    Bình thường insert cho ba bảng sẽ như sau
    Ví dụ với một post->có nhiều từ khóa cho một post hay được lưu tuần tự như sau
    +Từ khóa 1: Bảng 1 : Lưu từ khóa-> Bảng 2: Chọn nó là tag và categories->Bảng ba :liên quan giữa postID và khóa
    +Từ khóa 2: Bảng 1 : Lưu từ khóa-> Bảng 2: Chọn nó là tag và categories->Bảng ba :liên quan giữa postID và khóa
    +Từ khóa n: Bảng 1 : Lưu từ khóa-> Bảng 2: Chọn nó là tag và categories->Bảng ba :liên quan giữa postID và khóa
    Thay vì như vậy có thể chuyển như sau
    +Từ khóa 1..Từ khóa n->dùng executeBatch->để lưu dữ liệu lấy danh sách id sau khi lưu
    +Danh sách id sau khi lưu chuyển qua bảng 2 dùng tiếp executeBatch
    +Tương tự cho bảng 3
    Tốc độ sẽ được cải thiện rất nhiều.Vấn đề là có thể có từ khóa trùng có bài viết trong java https://stackoverflow.com/questions/31649453/getting-inserted-or-existing-ids-with-executebatch như vầy để giải quyết,ngôn ngữ khác chắc cũng gần gần vậy
     
    Hoa Mãn Lâu likes this.
  12. EDM

    EDM Sơ Nhập Giang Hồ

    tốc độ insert tag của cụ ra sao? nay mình đang viết lại tool sửa all bài viết ~ 25k post trong vòng 30'
     
  13. money

    money Hương Chủ

    Anh mới “oánh” 1.4M tags vào 9M documents (tìm các documents nào có chứa tags tương ứng thì gán vô) mất hết gần 1 tiếng nhưng không phải wp.

    Anh chỉ post để khoe khoang vậy thôi chứ không có ý gì đâu {canny}
     
  14. console

    console Bang Chúng

    Mongo hay mysql mà lẹ dữ anh
     
  15. wpresources

    wpresources Bang Chúng

    Lâu nay em hay lưu từ khóa thành file tốn khá nhiều inode.Tag anh nhiều vậy anh lưu kiểu gì đỡ tốn inode vậy anh,hay dùng vps dung lượng lớn để chứa a
     
  16. money

    money Hương Chủ

    Text file em ạ
     
    wpresources and console like this.
  17. vipkhongtin

    vipkhongtin Sơ Nhập Giang Hồ

    Có bác nào có query insert cả tags post vào db wordpress ko ạ?
    đoạn này e tìm được ko insert đc tag, mà vào bảng tìm cũng ko thấy field tags nó ạ
    Code:
    INSERT INTO `wp_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_status`, `comment_status`, `ping_status`, `post_name`, `post_modified`, `post_modified_gmt`, `guid`, `post_type`, `comment_count`) VALUES ([ID], [AUTHOR], '[DATE1]', '[DATE2]', '[CONTENT]', '[TITLE]', 'publish', 'open', 'open', '[POSTNAME]', '[DATE3]', '[DATE4]', '[GUID]', 'post', 0);
    hiện tại thì em phải dùng cách insert filed tiêu đề, nội dung, tags vào 1 bảng tạm.
    sau đó lại tải csv về rồi dùng wp all import thấy lâu và mắc công quá ạ.
     
  18. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    cái câu lệnh của thím là để insert post vào wordpress thôi. còn muốn insert tag vào thì phải insert thêm 3 bảng nữa cụ thể là
    wp_terms -> insert tag để lấy tag id, name tag, url
    wp_term_taxonomy -> để định nghĩa tag desc
    wp_term_relationships -> mới gán tag id vô post id

    Gắn tag vô wp nó hơi lằng nhằng vậy đó
     
    vipkhongtin likes this.
  19. vipkhongtin

    vipkhongtin Sơ Nhập Giang Hồ

    em thấy cũng lằng nhằng thật, đành viết grab rồi xài scrapes hoặc wp crawl cụ ạ {beauty}
     
  20. wpresources

    wpresources Bang Chúng

    Anh lưu mỗi từ khóa và từ khóa liên quan một file hay tất cả thành một file,rồi xử lý giống bài thớt từng đăng là 100MillionUser