Игорь_Vasinsky
5.04.2011 - 23:01
$result = mysqlQuery('SELECT * FROM `irb_users` WHERE `last_activity` > ' . (time() - 300));
т.е. ты предложил писать каждый раз время юзера, который шагает по сайту...
я делал так
1. Таблица для сессий
2. При авторизации - пишу юзера в таблицу + пишу его session_id();
3. Проверяю живучесть сессии - если что удаляю строку с юзером
или при logout юзера строку удаляю
и считаю строки.
но я макс на 300 хостов разчитывал... если больше, то проще по предидущему моему посту, чтоб не вешать БД
Цитата |
а как убавить 1, если пользователь закроет браузер? Или если электричество у него отключат? Или если на него рояль упадет? Я там предыдущее сообщение обновил, а пока обновлял, под ним понаписали. |
да х.з. я пока не задумовался...
значит писат сессии в другой файл и проверять на живучесть
а как файл надует до 20 мб - выводить сообщение
UNDERCONSTRUCTION
профилактические работы... SORRY
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Invis1ble
5.04.2011 - 23:04
А смысл лишнюю таблицу держать, когда достаточно одного поля? К тому же, по нему можно еще и строку «Последнее посещение» формировать, а по вашему принципу получается денормализация.
Игорь_Vasinsky
5.04.2011 - 23:06
+ ита = лолита
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
5.04.2011 - 23:08
ну во первых я безпринципный
во вторых если у меня в одной табле веники, в другой пряники, в друго юзеры...
то логика мне подсказывает что в червёртой - сессии...
но можно и так... я же не сказал что это шаблон скрипта, который я разрешил размещать на ирбис скул - для изучения новичками.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
5.04.2011 - 23:09
Да походу ТС нарвался на халяву.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky,
Википедия, да и какие-то там профессоришки, не согласны и ворчат нечто непонятное про какую-то нормализацию. О чем это они?
Игорь_Vasinsky
5.04.2011 - 23:19
а... слушал я про неё.. второс раз меня тыкают носом в неё.
Тока у меня вопрос - всё это принципы посто=роения БД,
А вот мой пример работает и оч даж хорошо - но я не прав.
Так что учение свет - а не учение тоже свет но как разглядишь.
Слушаю дальше.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
5.04.2011 - 23:22
да уж... и опять почитал и опят закружилась голова.
я ведь курсов не кончал и на ирбисе не учился. Интернет мой учитель.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Krevedko
6.04.2011 - 00:14
Цитата |
А без базы тоже можно. Пихать в сериализованном виде в файл массив такого вида:
|
не слишком ли жирный файл получится для такой посещаемости ? даже если стирать все данные кроме последних скажем 20 минут. да и действительно файл имеет обыкновение перетираться при одновременном доступе. заметил, когда делал счетчик на файлах. не помогал даже flock
Invis1ble
6.04.2011 - 00:25
Krevedko
Цитата |
не помогал даже flock |
Krevedko, ну вот я и написал, что БД предпочтительнее. А при такой посещаемости так и так жирное что-нибудь да будет: либо файл, либо выборка. Хотя зависит еще от интенсивности пользования сайтом. Может, там если пользователь минуту ничего не делает — значит вышел, а может, он видео получасовое смотрит. Это ведь все тоже сильно влияет на интервал, через который статус становится неактуальным.
Krevedko
6.04.2011 - 00:37
Цитата (Invis1ble @ 5.04.2011 - 20:25) |
Krevedko
Цитата | не помогал даже flock |
значит неправильно использовал
|
flock() не будет работать на NFS и многих других сетевых файловых системах. Обратитесь к документации вашей операционной системы для получения дополнительной информации.
В некоторых операционных системах flock() реализован на уровне процессов. При использовании многопоточных серверных API, таких как ISAPI, вы не можете полагаться на flock() для защиты ваших файлов от дугих PHP-скриптов, которые работают в параллельном потоке на том же сервере!
flock() не поддерживается на старых файловых системах вроде FAT и его производных, так что всегда будет возвращать FALSE в этом окружении (это особенно касается пользователей Windows 98).
возможно сервер такой был
Цитата (eXaM @ 5.04.2011 - 13:51) |
А без базы тоже можно. Пихать в сериализованном виде в файл массив такого вида |
Тогда вероятность того, что ты накроешь свой жёсткий будет стремиться к 100%
Цитата (Krevedko @ 5.04.2011 - 13:49) |
2) а без базы это как-то можно ? а то посещаемость сайта скажем 1000000 человек в день (и это не штука). тут каждый запрос на счету |
Можно ведь использовать таблички типа MEMORY для большой посещаемости, тогда запрос будет отрабатываться в разы быстрее. А ещё лучше прикрутить memcached (что-то типа
этого, только для юзернэймов), тогда будет ещё круче, ибо потом не возникнет больших проблем в масштабировании на несколько серверов.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.