AJAX朋友活动与AJAX, MySQL和PHP


AJAX Friend Activity With AJAX, MySQL And PHP?

我正在构建一个系统来显示我一直在开发的web系统上的实时活动,问题是我不太确定如何做到这一点,并使其与AJAX实时。

基本上,我有一个评级表,充满了音乐评级,每当有人喜欢或"+1"一首歌时,我想让它显示在这个实时活动的东西上。

我将从一些代码开始,但我不太确定如何做任何AJAX !

有没有人知道我如何通过一个盒子,一次一个"故事"的实时数据流?

将jQuery添加到您的页面中,您可以轻松地使用$.ajax()。假设你有一个名为ajax.php的PHP脚本,它接受一个名为song_idGET参数。

现在让我们假设您有一个+1链接,其html id属性以歌曲的id为后缀(引用费率表中的歌曲id)。

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

让我们看看ajax调用quick(当用户点击like链接时触发):

$('.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
        }
    }

请记住这都是假设的。PHP脚本根本就不完整。我的例子假设了很多东西,但它应该是一个足够的基础,可以开始。

仅使用LAMP(PHP)堆栈几乎不可能实现这种缩放。有一些可用的web服务可以帮助你实现这一点(扩展)。随便举几个例子:

  • http://pusher.com/
  • http://x-stream.ly/index.html
  • http://beaconpush.com/

都有某种免费计划。老实说,我觉得push有点贵,虽然它很受欢迎。

我认为Beaconpush是这三个中最便宜的,但我不相信它支持SSL,这是非常必要的,当你想要有安全(秘密)的信息通过网络。例如,您可以通过Beaconpush通过有线发送ping,但使用SSL从您自己的服务器安全地检索信息。

最后,x -stream也有相当慷慨的免费计划,支持SSL。如果你需要安全的网络连接,那么我认为x-stream是最适合你的方案,当你的网络规模很大时,它的价格是19美元,但在开始的时候,我认为免费的方案会让你开始。

您也可以使用自托管解决方案,例如http://socket.io或atmosphere只是举几个例子