Я использую обратный отсчет javascript-песен на моем радио-сайте.javascript обратный отсчет отставания из-за вызовов ajax
На каждые 10 секунд, отсчет лаги (пропуск 1 один более секунды), из-за AJAX вызова, чтобы проверить, есть ли новая песня:
function getcursong(){
var result = null;
var scriptUrl = "get_current_song.php";
$.ajax({
url: scriptUrl,
type: 'get',
dataType: 'html',
async: false,
success: function(data) {
result = data;
}
});
return result;
}
Глядя в консоли, я вижу, что GET
вызов занимает около 2 секунд.
get_current_song.php
использует curl
для получения текущей песни с сервера icecast.
Есть ли что-то, что я могу сделать, чтобы предотвратить обратный отсчет от задержек из-за этих вызовов ajax?
Ниже приведено get_current_song.php
.
<?php
require('config.php');
$current_song = getStreamInfo();
function url_get_contents($Url) {
if (!function_exists('curl_init')){
die('CURL is not installed!');
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $Url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_TIMEOUT,2);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
function getStreamInfo(){
$str = url_get_contents(SERVER.'/status.xsl?mount='.MOUNT);
if(preg_match_all('/<td\s[^>]*class=\"streamdata\">(.*)<\/td>/isU', $str, $match)){
$x = explode(" * ",$match[1][9]);
return $x[1];
}
}
?>
<?php
echo $current_song;
?>
Не выполняйте синхронизацию вызова ASYNCHRONOUS;) – Andreas
@Jeffman верен. Удалите 'async: false' (по умолчанию это неявный' async: true'), если вам это не нужно. – ale
Спасибо! Это было так. – trogne