PHP Как мне выполнить эти проверки быстрее / или быстрее загрузить страницу? - PullRequest
0 голосов
/ 11 февраля 2012

Я новичок в PHP и мне интересно, что может быть лучше для выполнения этой операции? PHP использует 2 API, предоставляемых own3d.tv и justin.tv, чтобы проверить состояние потока, независимо от того, подключен он или нет. То, как я это реализовал, ужасно, так как если вы загружаете страницу, она проверяет каждый поток внутри PHP в отдельности, а затем отображает только страницу и результаты. У меня вопрос, как я могу загрузить страницу а) быстрее или б) с помощью jquery или чего-то другого, чтобы сначала отобразить страницу, но в каждом потоке будет указано «Загрузка ...», а когда он действительно проверяется, отобразить результат как внизу.

Вот все упомянутый 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>

Ответы [ 3 ]

2 голосов
/ 11 февраля 2012

Это абсолютно базовый пример, использующий 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 голосов
/ 22 апреля 2012

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

0 голосов
/ 11 февраля 2012

Вы можете сделать это, используя jQuery ajax метод . Этот метод имеет обратный вызов, называемый успехом, в котором вы можете заменить «Загрузка ...» на «Онлайн» или «Автономно» в зависимости от результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...