Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (3) [1] 2 3  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> реал-тайм на php
VELIK505  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1515
Пользователь №: 25307
На форуме: 6 лет, 7 месяцев, 13 дней
Карма: 44




Надо чекать юзаков на онлайн/офлайн и + выводить общее кол-во онлайна людей на сайте (цифру). в реалтайме.
Сделал по простому.
Есть табличка memory usonline visitor lastvisit
куда идут запросики:
whonline.php:
$user_onli=(isset($_SESSION['username']))? $_SESSION['username'] : '' ;
$uo_keepquiet="";
$uo_query = "SELECT `lastvisit` FROM `still_online` WHERE `visitor` = '".$_SERVER['REMOTE_ADDR']."'";
$uo_result = mysql_query($uo_query);
if(mysql_num_rows($uo_result) == 0) {
mysql_query("INSERT INTO `still_online` (`visitor`,`lastvisit`,`usonline`) VALUES('".$_SERVER['REMOTE_ADDR']."', unix_timestamp(), '". mysql_real_escape_string($user_onli) ."')");
} else {
mysql_query("UPDATE `still_online` SET `lastvisit` = unix_timestamp(), `usonline`='". mysql_real_escape_string($user_onli) ."' WHERE `visitor` = '".$_SERVER['REMOTE_ADDR']."'");
}
if($uo_keepquiet == FALSE) {
$uo_count = mysql_num_rows(mysql_query("SELECT `usonline` FROM `still_online`"));
}

ajax_online.php:
<?php session_start();
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
require_once($_SERVER['DOCUMENT_ROOT']."/whonline.php");
echo ' '.$uo_count;
mysql_close($con);
?>

ну и на сайте:
<script>
$(document).ready(function(){
setInterval(function(){
$.ajax({
type:'POST',
url:'/ajax_online.php',
success:function(data){
$("#online-site").html(data);
}
}
);
},10000);
});
</
script>

<div class="on_line" title="Сколько человек онлайн"><div class="onpovorot" id="online-site"> <?=$uo_count;?></div>

Раз в 10 секунд чекаю.
Всё впринипе устраивает (кол-во запросов к mysql-memory-table абсолютно не напрягает и не волнует).
Но вот php при таком подходе кушает гораздо больше процессорного времени (%CPU).
Как я понимаю из за того же рекуе/инклюда которые едят время процессора? то что раз в 10 сек допустим у 4000 типов которые онлайн выполняеться 8000 инклюдов? или из за session_start?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26438
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 10 дней
Карма: 739




мне кажеться php здесь поскольку-постольку, тут тока на запросы можно пожаловаться.

можешь для теста закоментить код с запросами и сверить


код то так себе по содержимому
$_SERVER['REMOTE_ADDR'] - у нас пол микрорайона на одном IP сидеть может наверн


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
VELIK505  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1515
Пользователь №: 25307
На форуме: 6 лет, 7 месяцев, 13 дней
Карма: 44




Цитата (Игорь_Vasinsky @ 29.12.2015 - 04:52)
мне кажеться php здесь поскольку-постольку, тут тока на запросы можно пожаловаться.

можешь для теста закоментить код с запросами и сверить


код то так себе по содержимому
$_SERVER['REMOTE_ADDR'] - у нас пол микрорайона на одном IP сидеть может наверн

Неа запросы неочём. что они есть что их нет. ничего не жрут. А вот сами процессы php-fpm раздуваються с 3% до 16%. сессии в memcached если убираю session_start то нагрузка memcache на проц падает на 2%.
Проверил поставил чек раз в 2 секунды. memcached раздулся с 10% до 40% на CPU.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
VELIK505  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1515
Пользователь №: 25307
На форуме: 6 лет, 7 месяцев, 13 дней
Карма: 44




Вот пример надо было чекать 1 txt файл каждые 2 сек в котором было 2 инклюда.
при 4-5к онлайна и раздавать.
php-fpm процессы раздувал. убрал сессии старт процессы не дулись. Если sesion_start и чек каждые 2 сек убивает весь проц мемкеш за минуту.
переделал без сессии инклюдов в json и чек напрямую без всего:
$(document).ready(function() {
setInterval(function(){
$.ajax({
type:'POST',
url:'/cach_desck.inc',
dataType: 'json',
success:function(text){
html_text = '<span style="font-size: 13px; color: #F80000;" class="status">Я '+text.user+'</span><br />';
html_text += '<span style="font-size: 11px;" class="status">'+text.rating_text+' ('+text.refbek+' %)</span>';
html_text += '<a href="/wall.php?uid='+text.idu+'" target="_blank"><br /><div id="ava" style="padding-top:7px;"><img class="ava_new" src="'+text.avatar+'" width="130px" height="130px" alt="avatar" title="Перейти на стену '+text.user+'" /></div></a>';
if(text.komment != ''){
html_text += '<br /><span style="font-size: 11px;" class="status"><font color="#F80000">'+text.komment+'</font></span><br />';
}
$('#chec-doska').html(html_text);
}
}
);
},2000);
});

получилось что как будто всем раздаю раз в 2 сек несколько байт html. В таком случае всё ровно.
А вот так:
$(document).ready(function() {
setInterval(function(){
$.ajax({
type:'POST',
url:'/ajax_doska.php',
success:function(data){
$("#chec-doska").html(data);
}
}
);
},3000);
});

<?php @session_start();
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
require_once($_SERVER['DOCUMENT_ROOT']."/funciones.php");
require_once($_SERVER['DOCUMENT_ROOT']."/plugins/stats/cach_desck.inc");

if ($rating_desck >= 0 AND $rating_desck < 10) {$new_s_d_r = '11'; }
elseif ($rating_desck >= 10 AND $rating_desck < 100) {$new_s_d_r = '11'; }
elseif ($rating_desck >= 100 AND $rating_desck < 250) {$new_s_d_r = '11'; }
elseif ($rating_desck >= 250 AND $rating_desck < 600) {$new_s_d_r = '1111'; }
elseif ($rating_desck >= 600 AND $rating_desck < 1000) {$new_s_d_r = '1111'; }
elseif ($rating_desck >= 1000 AND $rating_desck < 10000) {$new_s_d_r = '11111'; }
elseif ($rating_desck >= 10000 AND $rating_desck < 50000) {$new_s_d_r = '11111'; }
elseif ($rating_desck >= 50000) {$new_s_d_r = '1111111111'; }
else {$new_s_d_r = '1111111111'; }
?>

Раздувал php-fpm процессы и memcached на процессор за 10 секунд до 80%
При большом онлайне чек с session старт и инклюдами не канает. Мне надо как то переводить это всё на клиентскую сторону в таком случае нежели чем на серверную?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26438
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 10 дней
Карма: 739




ну можешь и на клиент всё повесить

IP в DOM прописывать в php, JS - собирать
с сессиями ещё проще - JS с куками работает


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
VELIK505  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1515
Пользователь №: 25307
На форуме: 6 лет, 7 месяцев, 13 дней
Карма: 44




Цитата (Игорь_Vasinsky @ 29.12.2015 - 05:11)
ну можешь и на клиент всё повесить

IP в DOM прописывать в php, JS - собирать
с сессиями ещё проще - JS с куками работает

с сессиями ещё проще - JS с куками работает
ага спасибо так и думал что от сессии надо избавится. Буду пробывать.
А незнаешь ещё есть какаянить софтина чтобы посмотреть какие php скрипты скоко расходуют ресурсов? на apache когда крутился там можно было смотреть. А вот php-fpm хз как. Недавно перешёл незнаю
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1967
Пользователь №: 38654
На форуме: 3 года, 6 месяцев, 20 дней
Карма: 46




Сделай через веб.сокет с хранилищем в мемкеше или редисе. При конекте пользователя ставишь в счетчик +1, при дисконеекти -1. На хабре есть статья про подобные штуки.


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



c начала 2017 года в Новосибирске.
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 26438
Пользователь №: 21350
На форуме: 7 лет, 4 месяца, 10 дней
Карма: 739




Цитата
А незнаешь ещё есть какаянить софтина чтобы посмотреть какие php скрипты скоко расходуют ресурсов? на apache когда крутился там можно было смотреть. А вот php-fpm хз как. Недавно перешёл незнаю

это не, для себя у меня нет тяжёлых проектов, хостинги обычно справляются, сервера не настраивал, не мониторил.


--------------------
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql (TSql, BI OLAP, MDX), Git, SVN, CodeIgnater, Yii 2, JiRA, Redmine, Bitbucket, Composer
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
VELIK505  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1515
Пользователь №: 25307
На форуме: 6 лет, 7 месяцев, 13 дней
Карма: 44




Цитата (chee @ 29.12.2015 - 06:21)
Сделай через веб.сокет с хранилищем в мемкеше или редисе. При конекте пользователя ставишь в счетчик +1, при дисконеекти -1. На хабре есть статья про подобные штуки.

Мне надо считать и авторизированных и знать их ники. Дай ссылку на статью гляну. И соккет тоже все услышали сокет соккет о мега технология. А вы например знаете что число обращений к сокетам ограничено ОС? И что чрезмерное обращение к сокетам выстраивает длинную очередь? По мимо этого надо придёться переделать sysctl. И если учесть что на сокеттах много чего итак висит всякие пыхи мемкешы и тд и тп. Так что сокеты не всегда есть хороший вариант. На хабре 90% такой информации от людей которые держат сайтики с 500-1000 онлайна от силы и они даже не представляют какие могут проблемы из за реализаций той или иной технологии. 90% статей читаешь тупо описано реализация кода, и лишь токо 10% описывают отстройку серверной части и когда и где это можно применять и нельзя. Потому что остальные 90% с таким даже не сталкивались и никогда возможно не столкнуться. У меня недавно ситуация была с нехваткой портов из 20-30 человек лишь 1 человек помог правильным ответом который разрулил проблему. Так что знать одну технологию мало надо чётко знать и понимать как оно работает и зачем и как под неё отстраивать ос. Ни чего не имею против но в целом так и есть 90% статей там тупо забивают голову давая не совсем верную информацию начинающим. а потом люди спустя год когда проект разрастается начинают переделывать всё заного. Лучше опыт других людей слушать чем опыт статей. не раз убедился. Так что моё мнение хабр так шалтай балтай. Вот на тостере ещё могут кинуть норм ответ. стековерфлоу мощь вообще. А чему может научить хабр которые сами то свои коменты в 2016году чекнуть не могут в реал-тайме (приделали справа лоадер по клику) смешно biggrin.gif biggrin.gif biggrin.gif biggrin.gif biggrin.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2066
Пользователь №: 36605
На форуме: 4 года, 5 месяцев, 7 дней
Карма: 113




VELIK505

сокеты облегчат тебе жизнь нежели открывать соединение каждые пару секунд
точно так же ты можешь открыть сокет и постучаться туда, потом закрыть, только все данные будут там лежать в оперативной памяти и не нужны будут всякие таблицы в бд и тд

даже если демон упадет, после подьема данные в нем быстро востановяться если все сделаешь правильно
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2066
Пользователь №: 36605
На форуме: 4 года, 5 месяцев, 7 дней
Карма: 113




ну и вот пожайлуста 600к коннектов к websocket на node.js
http://www.jayway.com/2015/04/13/600k-conc...-using-node-js/
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
VELIK505  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1515
Пользователь №: 25307
На форуме: 6 лет, 7 месяцев, 13 дней
Карма: 44




Цитата (bestxp @ 29.12.2015 - 06:50)
VELIK505
даже если демон упадет, после подьема данные в нем быстро востановяться если все сделаешь правильно

скоко по времени поднимается? У меня забито почти на пределе socket max connection нужны для другого. Игорь норм совет дал на клиента перевести.
http://www.jayway.com/2015/04/13/600k-conc...-using-node-js/ тоже самое могу сказать nofile лям задал что не имеет смысла так как про soc max conn не описал которые по дефолту мелкий в линуксе
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2066
Пользователь №: 36605
На форуме: 4 года, 5 месяцев, 7 дней
Карма: 113




Цитата
скоко по времени поднимается?


сколько поставишь через столько и подымиться, обычно быстро

и да конечно будет на пределе если будешь спамить ajax запросы то и нагрузка вылезает существенная

плюшка вебсокета в том что он сам можешь сказать клиенту/клиентам что кол-во людей изменилось и нужно обновить значение , то есть все твои онлайн люди это грубо говоря все кто присоединен к сокет серверу, и тебе можно считай +1 -1 делать для всех/ +1 -1 для авторизованных в зависимости от того какое сообщение ( пакет ) будет отправлен к сокет серверу, то есть тут вообще работа с бд исключаеться
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1967
Пользователь №: 38654
На форуме: 3 года, 6 месяцев, 20 дней
Карма: 46




VELIK505, я не могу найти статью, ту что нашел не о том http://habrahabr.ru/post/43282/. Но тоже будет полезна, она все равно не так сильно будет нагружать сервер, если будешь юзать ajax. Но если у тебя клиенты сидят на html5 браузерах, то глупо не смотреть в сторону сокетов.


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
DedMorozzz  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Эникейщик
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 4054
Пользователь №: 19498
На форуме: 7 лет, 8 месяцев, 26 дней
Карма: 90




говоришь что мемкеш юзаешь.. а что мешает онлайновость на мемкеше сделать?
Если юзер открыл сайт и уехал в другую страну, е вырубая комп, то по логике аякса - он онлайн, хотя это не правда

Ставишь время жизни кеша в 10 минут. При действиях юзера - продлеваешь кеш
Что бы понять онлайн или нет - из кеша выгребаешь по ключу. Имеется - онлайн, иначе - нет.

Чем такой вариант не нравится?


--------------------
Если не говорить пользователям, что Linux это "Сложно и страшно", то им совершенно всё равно, в чём не разбираться
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (3) [1] 2 3  Ответ в темуСоздание новой темыСоздание опроса