За последние 24 часа нас посетили 16907 программистов и 1646 роботов. Сейчас ищут 937 программистов ...

Оптимизировать php код для подгрузки видео через youtube api

Тема в разделе "Прочие вопросы по PHP", создана пользователем Rango, 21 сен 2015.

  1. Rango

    Rango Активный пользователь

    С нами с:
    21 сен 2015
    Сообщения:
    1
    Симпатии:
    0
    Вечер добрый! Подгружаю видео с канала через код ниже. После подключения таким образом время загрузки сайта возросло в двое. Помогите оптимизировать (если возможно) этот код или возможно у кого то есть иной пример вывода видео. Док-ю youtube читал, в php не силен. Заранее благодарен!
    Код (PHP):
    1. /**
    2. * Получить список последних видео заданного плейлиста
    3. *
    4. * @param string $ytlist идентификатор плейлиста
    5. * @param int $cnt по сколько позиций обрабатывать (не всегда нужно содержимое всего плейлиста)
    6. * @param int $cache_life время жизни кеша в секундах (чтобы не получить бан IP за рилтайм запросы)
    7. * @return array список найденных видео, не более $cnt штук
    8. */
    9. function getYoutubePlaylistDataXml($ytlist, $cnt = 6, $cache_life = 3600) {
    10.     # файл, содержащий копию ленты
    11.     $cache_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . $ytlist . '.json';
    12.     
    13.     # Ключ для запросов
    14.     $api_key = 'AIzaSyD-RDSytuYVlUvkmK5JDDlSA2xxxxxxx';
    15.  
    16.     # специальный адрес, отвечающий за выдачу фида
    17.     $url = 'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet'
    18.          . '&playlistId=' . $ytlist
    19.          . '&maxResults=' . $cnt
    20.          . '&key=' . $api_key;
    21.  
    22.     # если кеш устарел...
    23.     /*if (time() - @filemtime($cache_file) >= $cache_life) {
    24.         # ...пытаемся обновить его
    25.         $buf = file_get_contents($url);
    26.         # в случае успеха запишем в файл обновлённые данные
    27.         # проверка на пустоту нужна для того, чтобы не запороть кеш при ошибке
    28.         if ($buf) file_put_contents($cache_file, $buf);
    29.     }*/
    30.  
    31.   $buf = file_get_contents($url);
    32.     
    33.     # если фид получить не удалось...
    34.     if (empty($buf)) {
    35.         # ...просто берём содержимое из кеша
    36.         $buf = file_get_contents($cache_file);
    37.     }
    38.     
    39.     # декодируем JSON данные
    40.     $json = json_decode($buf, 1);
    41.     
    42.     $arr = array();
    43.     
    44.     # если данных нет — на выход
    45.     if (empty($json['items'])) return $arr;
    46.     
    47.     # перебор доступных значений
    48.     foreach ($json['items'] as $v) {
    49.         $t = array(
    50.             'title' => $v['snippet']['title'], # название
    51.             'desc'  => $v['snippet']['description'], # описание
    52.             'url'   => $v['snippet']['resourceId']['videoId'], # адрес
    53.         );
    54.         
    55.         # изображения
    56.         if (isset($v['snippet']['thumbnails'])) {
    57.             $t['imgs']['all'] = array();
    58.             foreach ($v['snippet']['thumbnails'] as $name => $item) {
    59.                 $t['imgs']['all'][] = $item['url'];
    60.                 $wh = $item['width'] . 'x' . $item['height'];
    61.                 $t['imgs'][$wh][0] = $item['url'];
    62.             }
    63.         }
    64.         
    65.         $arr[] = $t;
    66.     }
    67.     return $arr;
    68. }
    69.  
    70. $playlist_id = 'PLW-upYqPhHU4jTovc0YXwKVnxxxxxxxx';
    71. $arr = getYoutubePlaylistDataXml($playlist_id);
    72.  
    73. # если что-то получено...
    74. if ($arr) {
    75.     # ...построить табличку с изображением, названием и ссылкой на ролик
    76. foreach ($arr as $v) { # цикл по массиву
    77.     $LINK = $v['url'];
    78.     $IMAGE = $v['imgs']['120x90'][0];
    79.     $TITLE = $v['title'];
    80.     $TIME = '';
    81.     $output .= '<div class="item">';
    82.     $output .= '<div class="item-header">';
    83.     $output .= '<a href="http://www.youtube.com/v/'.$LINK.'" rel="nofollow" target="_blank" class="hover-image"><img src="assets/templates/trk/images/video-icon.png" alt="" class="news-video-icon" />';
    84.     $output .= '<img src="'.$IMAGE.'" alt="" /></a>';
    85.     $output .= '</div>';
    86.     $output .= '<div class="item-content"><h3>[url="'.$LINK.'"]'.$TITLE.'[/url]</h3></div></div>';
    87.  
    88. }
    89. return $output;
    90. } else {
    91.     # ...иначе, если массив данных пуст, вывести соответствующее сообщение
    92.     echo 'Не удалось получить данные';
    93. } 
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Re: Оптимизировать php код для подгрузки видео через youtube

    перенести тему в раздел "free-lance" или "сделайте за меня"?

    Но если хочешь учиться, то найди в интернете код который замеряет время выполнения куска кода, и вдумчиво замеряй чтобы обнаружить что у тебя больше всего грузит сервер