Вечер добрый! Подгружаю видео с канала через код ниже. После подключения таким образом время загрузки сайта возросло в двое. Помогите оптимизировать (если возможно) этот код или возможно у кого то есть иной пример вывода видео. Док-ю youtube читал, в php не силен. Заранее благодарен! Код (PHP): /** * Получить список последних видео заданного плейлиста * * @param string $ytlist идентификатор плейлиста * @param int $cnt по сколько позиций обрабатывать (не всегда нужно содержимое всего плейлиста) * @param int $cache_life время жизни кеша в секундах (чтобы не получить бан IP за рилтайм запросы) * @return array список найденных видео, не более $cnt штук */ function getYoutubePlaylistDataXml($ytlist, $cnt = 6, $cache_life = 3600) { # файл, содержащий копию ленты $cache_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . $ytlist . '.json'; # Ключ для запросов $api_key = 'AIzaSyD-RDSytuYVlUvkmK5JDDlSA2xxxxxxx'; # специальный адрес, отвечающий за выдачу фида $url = 'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet' . '&playlistId=' . $ytlist . '&maxResults=' . $cnt . '&key=' . $api_key; # если кеш устарел... /*if (time() - @filemtime($cache_file) >= $cache_life) { # ...пытаемся обновить его $buf = file_get_contents($url); # в случае успеха запишем в файл обновлённые данные # проверка на пустоту нужна для того, чтобы не запороть кеш при ошибке if ($buf) file_put_contents($cache_file, $buf); }*/ $buf = file_get_contents($url); # если фид получить не удалось... if (empty($buf)) { # ...просто берём содержимое из кеша $buf = file_get_contents($cache_file); } # декодируем JSON данные $json = json_decode($buf, 1); $arr = array(); # если данных нет — на выход if (empty($json['items'])) return $arr; # перебор доступных значений foreach ($json['items'] as $v) { $t = array( 'title' => $v['snippet']['title'], # название 'desc' => $v['snippet']['description'], # описание 'url' => $v['snippet']['resourceId']['videoId'], # адрес ); # изображения if (isset($v['snippet']['thumbnails'])) { $t['imgs']['all'] = array(); foreach ($v['snippet']['thumbnails'] as $name => $item) { $t['imgs']['all'][] = $item['url']; $wh = $item['width'] . 'x' . $item['height']; $t['imgs'][$wh][0] = $item['url']; } } $arr[] = $t; } return $arr; } $playlist_id = 'PLW-upYqPhHU4jTovc0YXwKVnxxxxxxxx'; $arr = getYoutubePlaylistDataXml($playlist_id); # если что-то получено... if ($arr) { # ...построить табличку с изображением, названием и ссылкой на ролик foreach ($arr as $v) { # цикл по массиву $LINK = $v['url']; $IMAGE = $v['imgs']['120x90'][0]; $TITLE = $v['title']; $TIME = ''; $output .= '<div class="item">'; $output .= '<div class="item-header">'; $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" />'; $output .= '<img src="'.$IMAGE.'" alt="" /></a>'; $output .= '</div>'; $output .= '<div class="item-content"><h3>[url="'.$LINK.'"]'.$TITLE.'[/url]</h3></div></div>'; } return $output; } else { # ...иначе, если массив данных пуст, вывести соответствующее сообщение echo 'Не удалось получить данные'; } PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Re: Оптимизировать php код для подгрузки видео через youtube перенести тему в раздел "free-lance" или "сделайте за меня"? Но если хочешь учиться, то найди в интернете код который замеряет время выполнения куска кода, и вдумчиво замеряй чтобы обнаружить что у тебя больше всего грузит сервер