disable long pool
This commit is contained in:
parent
320b716a5f
commit
561095a808
|
@ -55,7 +55,6 @@ class MessageApiAction extends Action {
|
|||
while(true){
|
||||
sleep(5);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -66,7 +65,15 @@ class MessageApiAction extends Action {
|
|||
$this->sendJson(['status' => false, 'message' => 'No data.']);
|
||||
}
|
||||
|
||||
return \Yii::$app->mymessages->sendMessage($whom_id, $message);
|
||||
\Yii::$app->mymessages->sendMessage($whom_id, $message);
|
||||
return \Yii::$app->mymessages->getNewMessages(\Yii::$app->user->identity->id, $whom_id);
|
||||
}
|
||||
|
||||
|
||||
protected function deleteMessage() {
|
||||
$id_message = \Yii::$app->request->get('id_message', false);
|
||||
$result = \Yii::$app->mymessages->deleteMessage($id_message);
|
||||
return $result['id'];
|
||||
}
|
||||
|
||||
|
||||
|
@ -77,13 +84,19 @@ class MessageApiAction extends Action {
|
|||
$this->sendJson(['status' => false, 'message' => 'No last id, info:' . print_r($last_id, 1)]);
|
||||
}
|
||||
$time_cancel = (int) ini_get('max_execution_time') - 1;
|
||||
$duration = $time_cancel < 25 ? $time_cancel : 25;
|
||||
$endTime = time() + $duration;
|
||||
$duration = $time_cancel < 30 ? $time_cancel : 25;
|
||||
$endTime = time() + $duration; $i=0;
|
||||
while(time() < $endTime){
|
||||
$i++;
|
||||
if($i > 4) {
|
||||
$this->sendJson('dddd');
|
||||
}
|
||||
/*
|
||||
$data = \Yii::$app->mymessages->checkMessage($last_id);
|
||||
if (count($data) > 0) {
|
||||
$this->sendJson($data);
|
||||
}
|
||||
*/
|
||||
sleep(7);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -142,7 +142,7 @@ class MyMessages extends Component {
|
|||
* @throws EceptionMessages
|
||||
* @return array
|
||||
*/
|
||||
protected function changeStatusMessage($id, $status, $is_delete = null) {
|
||||
protected function changeStatusMessage($id, $status, $is_delete = false) {
|
||||
$model = Messages::findOne($id);
|
||||
$status_name = 'status';
|
||||
$current_user_id = \Yii::$app->user->identity->id;
|
||||
|
@ -241,10 +241,11 @@ class MyMessages extends Component {
|
|||
*/
|
||||
protected function getMessages($whom_id, $from_id = null, $type = null, $last_id = null) {
|
||||
$table_name = Messages::tableName();
|
||||
$my_id = \Yii::$app->user->getId();
|
||||
|
||||
$query = new \yii\db\Query();
|
||||
$query
|
||||
->select(['msg.created_at', 'msg.id', 'msg.status', 'msg.message', "usr1.id as from_id", "usr1.$this->attributeNameUser as from_name", "usr2.id as whom_id", "usr2.$this->attributeNameUser as whom_name"])
|
||||
->select(['FROM_UNIXTIME(msg.created_at, "%d-%m-%Y %H:%i:%S") as created_at', 'msg.id', 'msg.status', 'msg.message', "usr1.id as from_id", "usr1.$this->attributeNameUser as from_name", "usr2.id as whom_id", "usr2.$this->attributeNameUser as whom_name"])
|
||||
->from("$table_name as msg")
|
||||
->leftJoin("$this->userTableName as usr1", 'usr1.id = msg.from_id')
|
||||
->leftJoin("$this->userTableName as usr2", 'usr2.id = msg.whom_id');
|
||||
|
@ -259,10 +260,14 @@ class MyMessages extends Component {
|
|||
}
|
||||
|
||||
|
||||
//if not set type
|
||||
//send all message where no delete
|
||||
if($type) {
|
||||
$query->andWhere(['=', 'msg.status', $type]);
|
||||
}else {
|
||||
$query->andWhere(['!=', 'msg.is_delete_whom', 1]);
|
||||
} else {
|
||||
$query->andWhere('((msg.is_delete_from != 1 AND from_id = :my_id) OR (msg.is_delete_whom != 1 AND whom_id = :my_id) ) ', [
|
||||
':my_id' => $my_id,
|
||||
]);
|
||||
}
|
||||
|
||||
if($last_id){
|
||||
|
@ -272,8 +277,7 @@ class MyMessages extends Component {
|
|||
$return = $query->orderBy('msg.id')->all();
|
||||
$ids = Array();
|
||||
foreach($return as $m) {
|
||||
//$return[$m['from_name']][] = $m;
|
||||
if($m['whom_id'] == \Yii::$app->user->getId()) {
|
||||
if($m['whom_id'] == $my_id) {
|
||||
$ids[] = $m['id'];
|
||||
}
|
||||
}
|
||||
|
@ -287,18 +291,4 @@ class MyMessages extends Component {
|
|||
return array_map(function ($r) use ($user_id) { $r['i_am_sender'] = $r['from_id'] == $user_id; return $r;}, $return);
|
||||
}
|
||||
|
||||
|
||||
public static function unixToDate ($arr){
|
||||
if(!is_array($arr) && !is_object($arr)) {
|
||||
return $arr;
|
||||
}
|
||||
if(isset($arr['created_at'])) {
|
||||
$arr['created_at'] = \Yii::$app->formatter->asDatetime( $arr['created_at'], 'php:d-m-Y H:i');
|
||||
}
|
||||
if(isset($arr['updated_at'])) {
|
||||
$arr['updated_at'] = \Yii::$app->formatter->asDatetime( $arr['updated_at'], 'php:d-m-Y H:i');
|
||||
}
|
||||
return $arr;
|
||||
}
|
||||
|
||||
}
|
|
@ -265,4 +265,28 @@ body {
|
|||
background: -moz-linear-gradient(#E9E9E9, #F5F5F5);
|
||||
background: -o-linear-gradient(#E9E9E9, #F5F5F5);
|
||||
background: linear-gradient(#E9E9E9, #F5F5F5);
|
||||
}
|
||||
}
|
||||
|
||||
ul.list_users li.active {
|
||||
background-color: rgb(61, 61, 61);
|
||||
}
|
||||
|
||||
ul.list_users li.active span{
|
||||
color: rgb(170, 175, 179);
|
||||
}
|
||||
|
||||
span.delete-message {
|
||||
transform: rotate(90deg);
|
||||
display: block;
|
||||
float: right;
|
||||
position: relative;
|
||||
top: -15px;
|
||||
right: 2px;
|
||||
margin-left: 10px;
|
||||
color: rgb(100, 66, 224);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
span.delete-message:hover {
|
||||
color: red;
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ function getUrl() {
|
|||
|
||||
//Работа с окном сообщением
|
||||
var messages = (function() {
|
||||
"use strict";
|
||||
var di = {};
|
||||
|
||||
return function(id_block_) {
|
||||
|
@ -59,7 +60,7 @@ var messages = (function() {
|
|||
success: function(msg){
|
||||
if(msg.status) {
|
||||
self.inputText.val('');
|
||||
self.getNewMessages();
|
||||
self.updateBox(msg.data);
|
||||
} else {
|
||||
self.log('error: ' + 'sendMessage');
|
||||
self.log(msg);
|
||||
|
@ -68,6 +69,15 @@ var messages = (function() {
|
|||
});
|
||||
};
|
||||
|
||||
var changeActiveUser = function(id) {
|
||||
var currentId = self.inputFromId.val();
|
||||
if(currentId != id) {
|
||||
self.inputFromId.val(id);
|
||||
self.mainBox.find('li.contact').removeClass('active');
|
||||
self.mainBox.find('li.contact[data-user=' + id + ']').addClass('active');
|
||||
}
|
||||
};
|
||||
|
||||
this.reInit = function() {
|
||||
init();
|
||||
};
|
||||
|
@ -90,9 +100,11 @@ var messages = (function() {
|
|||
self.lastId = 1;
|
||||
};
|
||||
|
||||
|
||||
this.createHtmlMessage = function(n) {
|
||||
var html = '';
|
||||
html += '<div class="message ' + (n['i_am_sender'] ? 'bubble-right' : 'bubble-left') + '">';
|
||||
html += '<div data-id="' + n['id'] +'" class="message ' + (n['i_am_sender'] ? 'bubble-right' : 'bubble-left') + '">';
|
||||
html += '<span class="delete-message">X</span>';
|
||||
html += '<label class="message-user">' + n['from_name'] + '</label>';
|
||||
html += '<label class="message-timestamp">' + n['created_at'] +'</label>';
|
||||
html += '<p>' + n['message'] + '</p>';
|
||||
|
@ -104,6 +116,22 @@ var messages = (function() {
|
|||
self.log(m);
|
||||
};
|
||||
|
||||
self.deleteMessage = function(idMessage) {
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: self.base_url,
|
||||
data: {id_message:idMessage, action:'deleteMessage'},
|
||||
success: function(msg){
|
||||
if(msg.status) {
|
||||
self.mainBox.find('div.message[data-id=' + msg['data'] + ']').remove();
|
||||
} else {
|
||||
self.log('error: ' + 'deleteMessage');
|
||||
self.log(msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
this.updateBox = function(m) {
|
||||
var html = '';
|
||||
m.forEach(function(h){
|
||||
|
@ -129,11 +157,21 @@ var messages = (function() {
|
|||
return false;
|
||||
});
|
||||
|
||||
|
||||
self.mainBox.click(function(event) {
|
||||
var target = $(event.target);
|
||||
if(target.is('span.delete-message')) {
|
||||
var idMessage = target.parent('div.message').data('id');
|
||||
self.deleteMessage(idMessage);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
this.mainBox.find('.contact').click(function(event){
|
||||
var user_id = $(this).data('user');
|
||||
if(user_id) {
|
||||
self.clearBox();
|
||||
self.inputFromId.val(user_id);
|
||||
changeActiveUser(user_id);
|
||||
self.inputText.attr('disabled', false);
|
||||
self.getAllMessages();
|
||||
}
|
||||
|
@ -141,9 +179,11 @@ var messages = (function() {
|
|||
|
||||
di[id_block] = this;
|
||||
|
||||
//this.pools = new pooling(self.lastId);
|
||||
//this.pools.addListener('newData', this.fromPooling);
|
||||
|
||||
/*
|
||||
this.pools = new pooling(self.lastId);
|
||||
this.pools.addListener('newData', this.fromPooling);
|
||||
this.pools.start();
|
||||
*/
|
||||
}
|
||||
})();
|
||||
|
||||
|
@ -151,6 +191,7 @@ var messages = (function() {
|
|||
|
||||
//Пуллинг, данные отдаются через события
|
||||
var pooling = (function() {
|
||||
"use strict";
|
||||
var lastId = 0;
|
||||
var di = false;
|
||||
|
||||
|
@ -171,11 +212,13 @@ var pooling = (function() {
|
|||
url:getUrl(),
|
||||
type:"GET",
|
||||
data:{last_id:lastId, action:'pooling'},
|
||||
cahce:false,
|
||||
timeout:10000,
|
||||
async:true,
|
||||
//cahce:false,
|
||||
//timeout:10000,
|
||||
//async:true,
|
||||
success:function(result){
|
||||
self.triggerEvent('newData', result);
|
||||
if(result) {
|
||||
self.triggerEvent('newData', result);
|
||||
}
|
||||
},
|
||||
complete:function() {
|
||||
if(activeTimeout) {
|
||||
|
@ -187,6 +230,7 @@ var pooling = (function() {
|
|||
|
||||
this.start = function() {
|
||||
if(!activeTimeout) {
|
||||
self.log(15);
|
||||
pooling();
|
||||
activeTimeout = true;
|
||||
}
|
||||
|
@ -236,7 +280,5 @@ var pooling = (function() {
|
|||
}
|
||||
}
|
||||
};
|
||||
|
||||
this.start();
|
||||
};
|
||||
})();
|
||||
})();
|
Reference in a new issue