Вот моя текущая проблема. Я работаю с модулем чата и создаю модуль, который уведомляет пользователей через AJAX, что они были приглашены в чат. Текущая структура таблицы для таблицы приглашений выглядит следующим образом:
|-------------------------------------------------------------------------|
| CCID | NID | INVITER_UID | INVITEE_UID | NOTIFIED | ACCEPTED |
|-------------------------------------------------------------------------|
| int | int | int | int | (0 or 1) | (0 or 1) |
|-------------------------------------------------------------------------|
Я использую плагин периодического обновления для JQuery, чтобы постоянно опрашивать сервер на предмет наличия приглашений. Когда приглашение найдено, я устанавливаю уведомление от 0 до 1. Однако моя проблема - периодическое обновление. Когда я впервые вижу, что есть приглашение, я уведомляю пользователя и устанавливаю уведомление 1. При следующем выборе я получаю те же результаты и раньше, как если бы обновление не работало. Но когда я проверил базу данных, я увидел, что она работала очень хорошо. Это как если бы запрос запрашивал кеш, но я не могу понять это.
Мой код для периодического средства обновления выглядит следующим образом:
window.onload = function() {
var uid = $('a#chat_uid').html();
$.PeriodicalUpdater(
'/steelylib/sites/all/modules/_chat_whos_online/ajax/ajax.php', //url to service
{
method: 'get', //send data via...
data: {uid: uid}, //data to send
minTimeout: '1000', //min time before server is polled (milli-sec.)
maxTimeout: '20000', //max time before server is polled (milli-sec.)
multiplyer: '1.5', //multiply against curretn poll time every time constant data is returned
type: 'text', //type of data recieved (response type)
maxCalls: 0, //max calls to make (0=unlimited)
autoStop: 0 //max calls with constant data (0=unlimited/disabled)
},
function(data) //callback function
{
alert( data ); //for now, until i get it working
}
);
}
И мой код для вызова ajax выглядит следующим образом:
<?php
#bootstrap Drupal, and call function, passing current user's uid.
function _create_chat_node_check_invites($uid)
{
cache_clear_all('chatroom_chat_list', 'cache');
$query = "SELECT * FROM {chatroom_chat_invite} WHERE notified=0 AND invitee_uid=%d and accepted=0";
$query_results = db_query( $query, $uid );
$json = '{"invites":[';
while( $row = db_fetch_object($query_results) )
{
var_dump($row);
global $base_url;
$url = $base_url . '/content/privatechat' . $uid .'-' . $row->inviter_uid;
$inviter = db_fetch_object( db_query( "SELECT name FROM {users} WHERE uid = %d", $row->inviter_uid ) );
$invitee = db_fetch_object( db_query( "SELECT name FROM {users} WHERE uid = %d", $row->invitee_uid ) );
#reset table
$query = "UPDATE {chatroom_chat_invite} "
."SET notified=1 "
."WHERE inviter_uid=%d AND invitee_uid=%d";
db_query( $query, $row->inviter_uid, $row->invitee_uid );
$json .= '[';
$json .= '"' . $url . '",';
$json .= '"' . ($inviter->name) . '",';
$json .= '"' . ($invitee->name) . '"' ;
$json .= '],';
}
$json = substr($json, 0, -1);
$json .= ']}';
return $json;
}
?>
Я не могу понять, что происходит, любая помощь очень ценится!