2012-02-11 5 views
0

Я новичок в PHP, и мне интересно, что это лучший способ выполнить эту операцию? PHP использует 2 API, предоставляемые собственными3d.tv и justin.tv, чтобы проверить статус потока, будь он онлайн/офлайн. Способ, которым я его реализовал, ужасен, так как если вы загружаете страницу, она проверяет каждый поток в PHP по отдельности, а затем отображает только страницу и результаты. Мой вопрос: как я могу загрузить страницу: a) быстрее или b) используя jquery или что-то, чтобы сначала отобразить страницу, но в каждом потоке она скажет «Загрузка ...», и когда она действительно проверит ее, отобразите результат как это внизу.PHP Как выполнять эти проверки быстрее/или быстрее загружать страницу?

Здесь все PHP упоминается.

<html> 
<body> 
<title>Streams</title> 

<?php 

function pageTime() 
{ 
static $_pt; 
    if($_pt == 0) $_pt = microtime(true); 
    else return (string)(round(microtime(true)-$_pt ,3)); 
} 

pageTime(); 

//justin.tv 
echo '<b>Justin.tv: </b> <br>'; 

//eg.demon 
$json_file = file_get_contents("http://api.justin.tv/api/stream/list.json?channel=dotademon", 0, null, null); 
$json_array = json_decode($json_file, true); 

if ($json_array[0]['name'] == 'live_user_dotademon') { 
echo 'EG.Demon <sup><b>Popular</b></sup> - <font color="green"><b>Online</b></font> - Viewers: '; echo ($json_array[0]['channel_count']); echo ' - <a href="http://www.justin.tv/dotademon/">Watch now!</a> <br>'; 
} 
else { 
echo 'EG.Demon <sup><b>Popular</b></sup> - <font color="red"><b>Offline</b></font> <br>'; 
} 

//mouz.trixi 
$json_file = file_get_contents("http://api.justin.tv/api/stream/list.json?channel=trixilulz", 0, null, null); 
$json_array = json_decode($json_file, true); 

if ($json_array[0]['name'] == 'live_user_trixilulz') { 
echo 'Mouz.Trixi - <font color="green"><b>Online</b></font> - Viewers: '; echo ($json_array[0]['channel_count']); echo ' - <a href="http://www.justin.tv/trixilulz/">Watch now!</a> <br>'; 
} 
else { 
echo 'Mouz.Trixi - <font color="red"><b>Offline</b></font> <br>'; 
} 

//teamdignitascomewithme 
$json_file = file_get_contents("http://api.justin.tv/api/stream/list.json?channel=leceweme", 0, null, null); 
$json_array = json_decode($json_file, true); 

if ($json_array[0]['name'] == 'live_user_leceweme') { 
echo 'Dignitas.ComeWithMe - <font color="green"><b>Online</b></font> - Viewers: '; echo ($json_array[0]['channel_count']); echo ' - <a href="http://www.justin.tv/leceweme/">Watch now!</a> <br>'; 
} 
else { 
echo 'Dignitas.ComeWithMe - <font color="red"><b>Offline</b></font> <br>'; 
} 

//thepremierleague 
$json_file = file_get_contents("http://api.justin.tv/api/stream/list.json?channel=thepremierleague", 0, null, null); 
$json_array = json_decode($json_file, true); 

if ($json_array[0]['name'] == 'live_user_thepremierleague') { 
echo 'The Premier League - <font color="green"><b>Online</b></font> - Viewers: '; echo ($json_array[0]['channel_count']); echo ' - <a href="http://www.justin.tv/thepremierleague/">Watch now!</a> <br>'; 
} 
else { 
echo 'The Premier League - <font color="red"><b>Offline</b></font> <br>'; 
} 

//own3d.tv 
echo ' <br>'; 
echo '<b>Own3d.tv: </b> <br>'; 

//joindota with tobi wan 
$xml = simplexml_load_file("http://api.own3d.tv/liveCheck.php?live_id=10588"); 
$resultlive = $xml->xpath("/own3dReply/liveEvent/isLive"); 
$resultviewers = $xml->xpath("/own3dReply/liveEvent/liveViewers"); 

if ($resultlive[0] == 'true'){ 
echo 'joinDOTA with Tobi Wan <sup><b>Popular</b></sup> - <font color="green"><b>Online</b></font> - Viewers: '; echo ($resultviewers[0]); echo ' - <a href="http://www.own3d.tv/live/10588/">Watch now!</a> <br>'; 
} 
else { 
echo 'joinDOTA with Tobi Wan <sup><b>Popular</b></sup> - <font color="red"><b>Offline</b></font> <br>'; 
} 

//navidendi 
$xml = simplexml_load_file("http://api.own3d.tv/liveCheck.php?live_id=106735"); 
$resultlive = $xml->xpath("/own3dReply/liveEvent/isLive"); 
$resultviewers = $xml->xpath("/own3dReply/liveEvent/liveViewers"); 

if ($resultlive[0] == 'true'){ 
echo 'Na`Vi.Dendi <sup><b>Popular</b></sup> - <font color="green"><b>Online</b></font> - Viewers: '; echo ($resultviewers[0]); echo ' - <a href="http://www.own3d.tv/live/106735/">Watch now!</a> <br>'; 
} 
else { 
echo 'Na`Vi.Dendi <sup><b>Popular</b></sup> - <font color="red"><b>Offline</b></font> <br>'; 
} 

//ddlink 
$xml = simplexml_load_file("http://api.own3d.tv/liveCheck.php?live_id=117967"); 
$resultlive = $xml->xpath("/own3dReply/liveEvent/isLive"); 
$resultviewers = $xml->xpath("/own3dReply/liveEvent/liveViewers"); 

if ($resultlive[0] == 'true'){ 
echo 'DD.Link <sup><b>Popular</b></sup> - <font color="green"><b>Online</b></font> - Viewers: '; echo ($resultviewers[0]); echo ' - <a href="http://www.own3d.tv/live/117967">Watch now!</a> <br>'; 
} 
else { 
echo 'SK.Link <sup><b>Popular</b></sup> - <font color="red"><b>Offline</b></font> <br>'; 
} 

//gosugamers 
$xml = simplexml_load_file("http://api.own3d.tv/liveCheck.php?live_id=155074"); 
$resultlive = $xml->xpath("/own3dReply/liveEvent/isLive"); 
$resultviewers = $xml->xpath("/own3dReply/liveEvent/liveViewers"); 

if ($resultlive[0] == 'true'){ 
echo 'GosuGamers - <font color="green"><b>Online</b></font> - Viewers: '; echo ($resultviewers[0]); echo ' - <a href="http://www.own3d.tv/live/155074/">Watch now!</a> <br>'; 
} 
else { 
echo 'GosuGamers - <font color="red"><b>Offline</b></font> <br>'; 
} 

//mtwsynderen 
$xml = simplexml_load_file("http://api.own3d.tv/liveCheck.php?live_id=179879"); 
$resultlive = $xml->xpath("/own3dReply/liveEvent/isLive"); 
$resultviewers = $xml->xpath("/own3dReply/liveEvent/liveViewers"); 

if ($resultlive[0] == 'true'){ 
echo 'mTw.Synderen - <font color="green"><b>Online</b></font> - Viewers: '; echo ($resultviewers[0]); echo ' - <a href="http://www.own3d.tv/live/179879">Watch now!</a> <br>'; 
} 
else { 
echo 'mTw.Synderen - <font color="red"><b>Offline</b></font> <br>'; 
} 

//gosugamers with purge 
$xml = simplexml_load_file("http://api.own3d.tv/liveCheck.php?live_id=155073"); 
$resultlive = $xml->xpath("/own3dReply/liveEvent/isLive"); 
$resultviewers = $xml->xpath("/own3dReply/liveEvent/liveViewers"); 

if ($resultlive[0] == 'true'){ 
echo 'GosuGamers with Purge - <font color="green"><b>Online</b></font> - Viewers: '; echo ($resultviewers[0]); echo ' - <a href="http://www.own3d.tv/live/155073">Watch now!</a> <br>'; 
} 
else { 
echo 'GosuGamers with Purge - <font color="red"><b>Offline</b></font> <br>'; 
}  

//dotaoommentarieswithluminous 
$xml = simplexml_load_file("http://api.own3d.tv/liveCheck.php?live_id=160379"); 
$resultlive = $xml->xpath("/own3dReply/liveEvent/isLive"); 
$resultviewers = $xml->xpath("/own3dReply/liveEvent/liveViewers"); 

if ($resultlive[0] == 'true'){ 
echo 'DotA Commentaries with Luminous - <font color="green"><b>Online</b></font> - Viewers: '; echo ($resultviewers[0]); echo ' - <a href="http://www.own3d.tv/live/160379">Watch now!</a> <br>'; 
} 
else { 
echo 'DotA Commentaries with Luminous - <font color="red"><b>Offline</b></font> <br>'; 
} 

//teamdignitascomewithme 
$xml = simplexml_load_file("http://api.own3d.tv/liveCheck.php?live_id=40553"); 
$resultlive = $xml->xpath("/own3dReply/liveEvent/isLive"); 
$resultviewers = $xml->xpath("/own3dReply/liveEvent/liveViewers"); 

if ($resultlive[0] == 'true'){ 
echo 'Dignitas.ComeWithMe - <font color="green"><b>Online</b></font> - Viewers: '; echo ($resultviewers[0]); echo ' - <a href="http://www.own3d.tv/live/40553">Watch now!</a> <br>'; 
} 
else { 
echo 'Dignitas.ComeWithMe - <font color="red"><b>Offline</b></font> <br>'; 
} 

//loda 
$xml = simplexml_load_file("http://api.own3d.tv/liveCheck.php?live_id=73096"); 
$resultlive = $xml->xpath("/own3dReply/liveEvent/isLive"); 
$resultviewers = $xml->xpath("/own3dReply/liveEvent/liveViewers"); 

if ($resultlive[0] == 'true'){ 
echo 'Loda - <font color="green"><b>Online</b></font> - Viewers: '; echo ($resultviewers[0]); echo ' - <a href="http://www.own3d.tv/live/73096">Watch now!</a> <br>'; 
} 
else { 
echo 'Loda - <font color="red"><b>Offline</b></font> <br>'; 
} 
echo ' <br/>'; 
echo "The statuses were primitively checked in ". pageTime()." seconds."; 
?> 
</body> 
</html> 
+1

Это, вероятно, лучше подходит для [Codereview] (http://codereview.stackexchange.com) – Grexis

+0

вам нужно больше объяснений, если вы хотите помочь –

ответ

2

Это абсолютный самый основной пример, с помощью AJAX и JQuery

JQuery на главной странице:

$(document).ready(function() { 
    $("#stream1").load("stream1.php"); 
    $("#stream2").load("stream2.php"); 
    ... 
}); 

HTML на главной странице:

<div id="stream1">Loading...</div> 
<div id="stream2">Loading...</div> 
... 

Где stream1.php , stream2.php - это файлы с использованием кода, который вы отправили для каждой отдельной стрелы м.

Рассмотрите возможность использования метода $ .ajax в jQuery и игры с возможностями сделать его более функциональным. Должен вас начать.

+0

Спасибо за ответ mate, это отлично работает и может определенно работать поверх этого ! – user1104783

0

Вы можете сделать это, используя jQuery's ajax method. Этот метод имеет обратный вызов с именем success, который заменит «Loading ...» на «Online» или «Offline» в зависимости от результата.

0

Чтобы сделать это еще быстрее, я предлагаю сохранить ваш сценарий, как он работает, и запускать cronjob каждые 5 минут или около того, и сохранять онлайн-пользователей в локальной базе данных. Это будет самым быстрым способом, поскольку запрос локальной базы данных будет быстрее, чем полагаться на сторонний сайт для ответа.

Смежные вопросы