php - 由于ajax调用,javascript倒计时滞后

标签 php javascript ajax curl

我在我的广播网站上使用了 javascript 歌曲倒计时。

每 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;
?>

最佳答案

我假设 async: false 正在劫持您的倒计时功能。你需要它是假的吗?

关于php - 由于ajax调用,javascript倒计时滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18046776/

相关文章:

javascript - Backbone.js 和 Django Rest Framework 注册和身份验证

javascript - 在javascript中的两个不同的数组对象中查找具有不同值的元素

javascript - (按钮 || 输入) type=submit - jQuery AJAX 中 $_POST 变量缺少值

ajax - 模型绑定(bind)来自 KendoUI Grid 的排序字段

javascript - Google 时间轴图表

javascript - 使用ajax和bootbox进行非法调用

php - 由于未安装 MySQLnd,MySQLi 准备好的语句显示错误

php - 从 PHP 调用 sphinx 索引器

php - MySQL Group By 删除单个结果?

php - mysqli动态更新查询