2011-11-18 51 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只是僅舉幾例