Hỏi về site youtube

Discussion in 'Thảo Luận Chung' started by nguyenvan, Dec 3, 2019.

  1. Nai

    Nai MiddleMan Staff Member

    Hàm check xem file cache tồn tại ở đâu trong 1000 thư mục từ 1 đến 1000
    PHP:
    $cached_file cached_file_exists('cache_dir'$_GET['id']);
    if(
    $cached_file === false){
    #curl and save cache
    $cached_file sprintf('cache/%s/%u/pro%s','cache',rand(1,1000),$_GET['id']);
    }
    else{
    #get cached file to use
    }

    function 
    cached_file_exists($parentDir 'cache_dir'$fileName 'name_or_id_product'){
            for(
    $i 1$i 1001; ++$i){
                
    $path sprintf('cache/%s/%u/%s',$parentDir$i$fileName);
                if(
    file_exists($path))
                    return 
    $path;
            }
            return 
    false;
        }
     
    nguagovt likes this.
  2. Dang

    Dang Bang Chúng


    Trưởng lão dùng đệ quy + glob » array sort để filter các file đã hết hạn » xóa thì nhanh hơn.
    PHP:
    // ...
    array_multisort(array_map('filemtime'$items), SORT_NUMERICSORT_ASC$items);
    // ...
     
  3. Nai

    Nai MiddleMan Staff Member

    Mình dùng lệnh này để tạo cache mới và dùng cache có sẵn. Còn xóa thì dùng lệnh find trên centos bật cronjob hàng ngày.
     
    Dang likes this.
  4. vuducthuan1994

    vuducthuan1994 Tân Thủ Thôn

    proxy bro mua trang nào thế , proxy ipv6 mua cho rẻ đc k bác :))
     
  5. JohnWick

    JohnWick Sơ Nhập Giang Hồ

    Proxies v6 cũng ok nhé tuy nhiên mỗi proxy phải ở các subnet /64 khác nhau mới được nhé
     
  6. vuducthuan1994

    vuducthuan1994 Tân Thủ Thôn

    inbox bác ơi
     
  7. T-13

    T-13 Khách Qua Đường

    Site của tớ nè :)) đang bị tụt index ghê lắm youtubedownload[.]pro
    Get dữ liệu thì cần gì proxy ^^ do cách get thôi :D
     
    Moneyckv and Vito_King like this.
  8. nguyenvan

    nguyenvan Khách Qua Đường

    @T-13 ko cần proxy, API nhiều request vẫn get được bác tài thế? {beauty}
     
  9. nguagovt

    nguagovt Sơ Nhập Giang Hồ

    của mình như này thì thêm như nào nhỉ :D

    PHP:
    $break Explode('/'$_GET['id']);
    $file $break[count($break) - 1];
    $cachefile 'cache/v'.$file.'.txt';
    $cachetime 12000;
    // Serve from the cache if it is younger than $cachetime
    if (file_exists($cachefile) && time() - $cachetime filemtime($cachefile)) {
        
    //echo "<!-- Cached copy, generated ".date('H:i', filemtime($cachefile))." -->\n";
        
    include($cachefile);
        exit;
    }
    ob_start(); // Start the output buffer

    $data file_get_contents('https://tuoitre.vn/'.$_GET['id']);
    preg_match("#<title>(.*?)</title>#is",  $data$title );
    echo 
    $title[1];

    // Cache the contents to a file
    $cached fopen($cachefile'w');
    fwrite($cachedob_get_contents());
    fclose($cached);
    ob_end_flush(); // Send the output to the browser
     
  10. Nai

    Nai MiddleMan Staff Member

    PHP:
    $cachetime 12000;
    $cachefile cached_file_exists('cache_dir'$_GET['id']);

    if(
    $cachefile !== false && time() - $cachetime filemtime($cachefile)){
    #get cached file to use
        
    include_once($cachefile);
        exit;
    }
    else{
        
    #curl and save cache
        
    $cachefile sprintf('cache/%s/%u/pro%s','cache',rand(1,1000),$_GET['id']);
        
    ob_start(); // Start the output buffer

        
    $data file_get_contents('https://tuoitre.vn/'.$_GET['id']);
        
    preg_match("#<title>(.*?)</title>#is",  $data$title );
        echo 
    $title[1];

        
    // Cache the contents to a file
        
    $cached fopen($cachefile'w');
        
    fwrite($cachedob_get_contents());
        
    fclose($cached);
        
    ob_end_flush(); // Send the output to the browser
    }

    function 
    cached_file_exists($parentDir 'cache_dir'$fileName 'name_or_id_product'){
            for(
    $i 1$i 1001; ++$i){
                
    $path sprintf('%s/%u/%s',$parentDir$i$fileName);
                if(
    file_exists($path))
                    return 
    $path;
            }
            return 
    false;
        }
    Nhớ tạo 1000 thư mục stt từ 1 -> 1000 trong cache_dir đặt tại public_html
    Mà theo như code của cậu thì nó cache mỗi cái echo ra là title thôi à
     
    Last edited: Dec 8, 2019
    nguagovt likes this.
  11. k3ng1991

    k3ng1991 Khách Qua Đường

    Vẫn ăn đấy bác ạ :D
     
  12. Moneyckv

    Moneyckv Tân Thủ Thôn

    Đang còn 1.5tr index, 1 tháng cũng vài trăm k view ngon ăn mà bác.
    Chia sẽ bí quyết index nhiều như này được ko bác? :D
    À, bác bỏ cái addthis ở trang chủ đi bác, nó che hết cả menu nhìn vướng quá.
     
  13. vandungldc

    vandungldc Tân Thủ Thôn

    Có bán để lại cho mình code với bạn. Mình cũng có nhưng giờ get hay lỗi
     
  14. nguagovt

    nguagovt Sơ Nhập Giang Hồ

    2 ngày tạo vps mới 1 lần rồi chuyển code qua như em là đỡ ngay
     
  15. T-13

    T-13 Khách Qua Đường

    Inbox :)
    Bác làm vậy rồi thời gian đau đi chơi ^^ mọi việc đều có cách giải quyết, ăn cơm xổi vậy mệt lắm
     
  16. Nai

    Nai MiddleMan Staff Member

    Mà cái lệnh này nó chạy như thế nào vậy bác. Đọc định nghĩa thì nó sẽ sort 1 mảng thời gian cache của list items theo kiểu tăng dần của số và sort kiểu mặc định cho mảng items (Compare elements normally (Standard ASCII))
     
  17. Dang

    Dang Bang Chúng

    Trưởng môn nói hết rồi còn hỏi gì nữa :D. Mình dùng đoạn đó để thực hiện 1 chức năng : chỉ lưu lại tối đa 10 file mới nhất mà user tải lên.
     
  18. Nai

    Nai MiddleMan Staff Member

    Ý là mình ko hiểu mảng a (chứa danh sách các con số là thời gian cache từ ngắn tới dài) và mảng b là tên file theo thứ tự ASCII.
    Sau đó xử lý 2 mảng này thế nào để nó xóa các file trong b có filemtime vượt quá timecache đề ra trước đó ấy.
     
  19. Dang

    Dang Bang Chúng

    Có 1 mảng duy nhất thôi @Nai ơi! Đoạn code của mình bên dưới :

    PHP:
    <?php

    $time_now 
    time();

    $cache_time 86400;

    $items glob('dir-name/*.jpg'GLOB_NOSORT);

    if (!empty(
    $items))
    {

        
    array_multisort(array_map('filemtime'$items), SORT_NUMERICSORT_ASC$items);

        foreach (
    $items as $item)
        {

            if ((
    $time_now filectime($item)) > $cache_time)
            {
                @
    unlink($item);
            }
            else
            {
                break;
            }

        }

    }

    ?>
     
    hocauo40 likes this.
  20. JohnWick

    JohnWick Sơ Nhập Giang Hồ

    Sao các thím k chuyển sang memcache rồi set exprire mà cache file chi cho khổ vậy