2011-11-18 43 views
1

我正在构建一个系统,以显示我一直在开发的Web系统上的一些实时活动,问题是我不是很确定我该如何做到这一点,并使其与AJAX实时对接。AJAX与AJAX,MySQL和PHP的朋友活动?

基本上,我有一个收费表,充满了音乐收视率,并且每当有人喜欢或'+1'的歌曲,我想让它显示在这个实时活动的事情。

我会从一些代码开始,但我不太清楚如何做任何AJAX!

有没有人有任何想法我可以通过一个盒子,一个'故事'一次流实时数据?

+0

捡东西像jQuery(),为前。 [ajax函数](http://api.jquery.com/category/ajax/) –

+0

有几种方法可以做到这一点:ajax与长轮询,html5 websockets,XMPP,闪存套接字。 http://www.ape-project.org/,http://plugins.jquery.com/plugin-tags/long-polling – galchen

回答

0

将jQuery添加到您的页面,您可以轻松地使用$.ajax()来做到这一点。假设你有一个巧妙地命名为ajax.php的PHP脚本,它接受了名为song_id或其他东西的GET param。

现在我们假设您有一个+1链接,其HTML id属性后缀为歌曲ID(在rates表中引用歌曲ID)。

<a href="javascript:void(0);" id="like-34" class="like-link">Like</a> 
<span id="current-likes-34">5</span> 

让我们来看看Ajax调用快(其被触发,当用户点击类似链接):

$('.like-link').click(function() { 
    var songId = this.id.split('-')[1]; 
    $.ajax({ 
     url: '/path/to/ajax.php', 
     data: 'song_id=' + songId, 
     cache: false, 
     success: function(response) { 
      // update likes 
      $('#current-likes-' + songId).html(response); 
     } 
    }); 
}); 

现在,让我们来看看这是什么任意ajax.php脚本可能看起来像(简化):

<?php 
    // detect AJAX request 
    if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) 
     && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' 
    ) { 
     $songId = (isset($_GET['song_id'] && preg_match('/^[0-9]*$/', $_GET['song_id']) 
      ? (int) $_GET['song_id'] 
      : 0; 

     // assume a mysql db connection has been established 
     $sql = sprintf(
      'UPDATE rates SET likes = likes + 1 WHERE song_id = %d', 
      $songId 
     ); 
     mysql_query($sql); // run update query 

     // now get current amount of likes and print them out to be used by AJAX response 
     $result = mysql_query(sprintf('SELECT likes FROM rates WHERE song_id = %s', $songId)); 
     if ($result) { 
      $row = mysql_fetch_row($result); 
      echo $row[0]; // print likes 
     } 
    } 

记住是t他全是假设。 PHP脚本根本不完整。我的例子假定了很多东西,但它应该是一个足够的基础,开始。

0

几乎不可能只用LAMP(PHP)堆栈进行缩放。有一些网络服务可以帮助你实现这个(缩放)。只是仅举几例以随机顺序:

所有有某种自由的计划。老实说,推销员虽然很受欢迎,但价格有点贵。

我认为Beaconpush是这三种产品中最便宜的,但我不相信它支持SSL,当您希望获得安全(秘密)信息时,这非常必要。例如,您可以通过Beaconpush通过电线发送ping命令,但可以使用SSL安全地从您自己的服务器中检索信息。

最后还X-streamly有非常慷慨的免费计划与SSL的支持。如果你需要安全的连接,那么我认为x-streamly是你最好的计划,当你变得非常大的时候,一个非常好的价格计划是19美元,但是一开始我假设免费计划会让你开始。

您也可以使用自托管解决方案,例如像http://socket.ioatmosphere只是仅举几例