[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как сделать оптимизацию этого кода?
strol
Вообщем в движке dle в файле отображения короткой новости,добавил код:
			if( $row['stream_portal'] == 'twitch' ) {
$json_file = file_get_contents("http://api.justin.tv/api/stream/list.json?channel=$row[stream_url]", 0, null, null);
$json_array = json_decode($json_file, true);

if ($json_array[0]['name'] == "live_user_$row[stream_url]") {
$live_views = ($json_array[0]['channel_count']);
if( $category_id == 2 or $category_id == 3 ) {
if( $config['cache_count'] ) $db->query( "INSERT INTO " . PREFIX . "_views (news_id) VALUES ('{$row['id']}')" );
else $db->query( "UPDATE " . PREFIX . "_post set news_read='{$live_views}' where id='{$row['id']}'" );
}
elseif( $category_id == 4 ){
$db->query( "UPDATE " . PREFIX . "_post set category=3 where id='{$row['id']}'" );
}
}

else {
$db->query( "UPDATE " . PREFIX . "_post set category=4 where id='{$row['id']}'" );
$db->query( "UPDATE " . PREFIX . "_post set news_read='0' where id='{$row['id']}'" );
}
}

elseif( $row['stream_portal'] == 'own3d' ) {
$xml = simplexml_load_file("http://api.own3d.tv/liveCheck.php?live_id=$row[stream_url]");
$resultlive = $xml->xpath("/own3dReply/liveEvent/isLive");
$resultviewers = $xml->xpath("/own3dReply/liveEvent/liveViewers");
if ($resultlive[0] == 'true'){
$live_views = ($resultviewers[0]);
if( $category_id == 2 or $category_id == 3 ) {
if( $config['cache_count'] ) $db->query( "INSERT INTO " . PREFIX . "_views (news_id) VALUES ('{$row['id']}')" );
else $db->query( "UPDATE " . PREFIX . "_post set news_read='{$live_views}' where id='{$row['id']}'" );
}
elseif( $category_id == 4 ){
$db->query( "UPDATE " . PREFIX . "_post set category=3 where id='{$row['id']}'" );
}
}

else {
$db->query( "UPDATE " . PREFIX . "_post set category=4 where id='{$row['id']}'" );
$db->query( "UPDATE " . PREFIX . "_post set news_read='0' where id='{$row['id']}'" );
}
}

Если добавляю в файл отображения полной новости,то грузится почти сразу,ну это из за того,что одна новость только отображается,а если в файл короткой добавлю код,что выше,то грузится 15-25 секунд примерно с 10 новостями.
Я бы оставил вариант проверки только в полной новости,но в одной категории отображаются две другие категории с названием онлайн и оффлайн и ссылками на полные новости трансляций,когда кто либо перейдет в эту категорию,то он может попасть на трансляцию,которая уже не транслируется,так как нету проверки в файле короткой новости,а есть в полной новости.Но есть ещё и блок с отображением списка онлайн трансляций на каждой странице.Если и в него добавить этот код,то это уже идиотизм).
Не пойму где нужно поставить эту проверку,что бы в короткой новости,в полной новости и в блоке списка онлайн новостей,всегда были свежие данные и не загружались долго страницы.
Ещё раз опишу проблему: Если не ставить проверку в короткой новости,а только в полной,то при переходе из короткой новости на полную,есть шанс,что трансляция уже оффлайн,хотя в краткой новости она была онлайн,но после проверки в полной стала оффлайн.Или если не поставить проверку в блоке списка онлайн трансляций,то снова есть шанс,что проверка покажет,что трансляция оффлайн при переходе на полную новость.
Как оптимизировать код или где его правильно разместить или что я не так делаю?



Спустя 45 минут, 39 секунд (18.02.2012 - 16:50) strol написал(а):
Или как сделать,что бы эта проверка срабатывала каждые 30 секунд в независимости от того клацают по трансляциям или нет.Только не средствами крона на хостинге.А именно скрипт такой как будет выглядить?

Спустя 3 часа, 15 минут, 47 секунд (18.02.2012 - 20:06) Лена написал(а):
Про проверки ничего не понятно, путанно объяснили.
Вариант, как сделать оптимизацию кода:

$live_views = '';
switch($row['stream_portal'])
{
case 'twitch':
$json_file = file_get_contents("http://api.justin.tv/api/stream/list.json?channel=$row[stream_url]", 0, null, null);
$json_array = json_decode($json_file, true);

if ($json_array[0]['name'] == "live_user_$row[stream_url]") $live_views = ($json_array[0]['channel_count']);
else
$db->query( "UPDATE " . PREFIX . "_post set category=4, news_read='0' where id='{$row['id']}'" );

break;
case 'own3d':
$xml = simplexml_load_file("http://api.own3d.tv/liveCheck.php?live_id=$row[stream_url]");
$resultlive = $xml->xpath("/own3dReply/liveEvent/isLive");
$resultviewers = $xml->xpath("/own3dReply/liveEvent/liveViewers");
if ($resultlive[0] == 'true') $live_views = ($resultviewers[0]);
else
$db->query( "UPDATE " . PREFIX . "_post set category=4,news_read='0' where id='{$row['id']}'" );
break;
}

if($live_views) {
switch($category_id)
{
case 2:
case 3:
if( $config['cache_count'] ) $db->query( "INSERT INTO " . PREFIX . "_views (news_id) VALUES ('{$row['id']}')" );
else $db->query( "UPDATE " . PREFIX . "_post set news_read='{$live_views}' where id='{$row['id']}'" );
break;

case 4:
$db->query( "UPDATE " . PREFIX . "_post set category=3 where id='{$row['id']}'" );
break;
}
}


Спустя 1 час, 30 минут, 19 секунд (18.02.2012 - 21:36) strol написал(а):
Лена,Спасибо за оптимизацию,суть понял)Но не пойму почему не работает код.

Спустя 15 часов, 1 минута, 1 секунда (19.02.2012 - 12:37) strol написал(а):
А не,был мой косяк,код рабочий.Ещё раз большое спасибо!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.