Autor Zpráva
Fisak
Profil
Dobrý den. Chtěl bych udělat script kde bych obnovoval u mojich videí z YT co mam uložené v DB shlédnutí, like a dislike. Bohužel mám přes 6.000 záznamů a s tím už je těžší pracovat. Když jsem udělal script kterej obnovuje videa po 50ti tak se mi zobrazil server error... Tak jsem to zkusil metodou přes GET která mi ovšem vypsala smyčku při přesměrování. Prosím neporadil by mi někdo nějaké řešení?
if(isset($_POST["obnovit"]))
{

$result_max = DB::query("SELECT * FROM [youtube_videos]");
$max_v = count($result_max);

for($i=1; $i<=$max_v; $i+=50) {

  $i_plus = $i + 50;
  
   $result_up = DB::query("SELECT * FROM [youtube_videos] where [approved] = %s", "yes", " LIMIT $i, $i_plus")->fetchAll();
  foreach ($result_up as $n => $row_up) {

    $JSON = file_get_contents("https://gdata.youtube.com/feeds/api/videos/{$row_up->url}?v=2&alt=json");
    $media = json_decode($JSON);

    $arr_up = array(
        'views'  => $media->{'entry'}->{'yt$statistics'}->{'viewCount'},
        'likes'  => $media->{'entry'}->{'yt$rating'}->{'numLikes'},
        'dislikes'  => $media->{'entry'}->{'yt$rating'}->{'numDislikes'},
        
    );

    DB::query("UPDATE [youtube_videos] SET", $arr_up, "where url = %s", $row_up->url);


  }

}

}
Str4wberry
Profil
Asi nejjednodušší by bylo zvýšit čas zpracování skriptu.

Pokud to není možné, nezbývá než provést nějaké úpravy. Největší brzda bude nejspíš v tom file_get_contents pro 6 000 záznamů. Nejde z YT získat data ke všem videím v jednom požadavku nebo alespoň v méně požadavcích?

Jestli nejde ani to, je potřeba si zjistit, kolik videí skript zvládne. A spouštět jej opakovaně.
1) Přesměrováním sám na sebe s nějakým offset parametrem (hrozí, že to prohlížeč vyhodnotí jako nekonečnou smyčku přesměrování).
2) Spouštět jej JavaScriptem opět s nějakým offset parametrem.
3) Spouštět jej CRONem s různými offset parametry.

Nebo na to jít jinak a data updatovat, až když budou potřeba. Uživatel si klikne na stránku s videem, skript zkontroluje jak je údaj starý. Bude-li starý, provede se aktualisace právě jen tohoto jednoho záznamu.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: