Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хорошо ли экономить сессии? 
:(
    Опции темы
Muerto
Дата 17.7.2010, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



А можно подробней об REST я чет ничего не понял...
как мне это поможет не использовать сессии?


--------------------
user posted image
PM MAIL   Вверх
gcc
Дата 17.7.2010, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: -1
Всего: 17



Muerto, я только что набрал в гугле и не нашел...

но это видел! 
вот человек пишет, что надо использовать REST и никаких php сессий http://forum.vingrad.ru/index.php?showtopi...t&p=1433929

тут написано где это есть http://en.wikipedia.org/wiki/Representational_State_Transfer
оно есть только во фреймворках, почему-то
я в книге видел, вроде бы, где это детально рассказывалось по perl'овому фремворку MVC Catalyst, но сейчас искать надо...

тут тоже не нашел 
http://search.cpan.org/search?m=all&q=rest&s=11


PS: кто использовал, тоже, интересно бы увидеть примеры...

Добавлено @ 14:24
Muerto, это если у тебя зарегистрировано 10млн человек, или если порно сайт с 100млн хостов в сутки, и таблицы из сессями занимают сотни млн. строк, то тогда не красиво сессии хранить... и особенно елси красиво все сделано на NoSQL, а сессии хранить - не в тему будет...

а в других обычных случаях можно использовать обычные сессии

Это сообщение отредактировал(а) gcc - 17.7.2010, 14:27
PM WWW ICQ Skype GTalk Jabber   Вверх
Muerto
Дата 17.7.2010, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



У меня вот например сервер VPS, лимит открытых файлов 3к, я так понимаю сессия  считается какоткрытый файл?
То тогда если у меня десяток сайтов, легко можно лимит превысить ...

Очень заинтересовал этот REST
Но таки нужен пример использования, а то я ничего не понимаю =-(

Добавлено @ 15:43
Поскольку в PHP пока еще нет реализации REST то не оч актуально

Нарыл вот это http://habrahabr.ru/company/Techart/blog/83442/ стоит почитать

Да и вообще REST из того что удалось выучить за 5 минут, это никакая не замена COOKIE или SESSION а просто другой подход разработки...

Это сообщение отредактировал(а) Muerto - 17.7.2010, 15:59


--------------------
user posted image
PM MAIL   Вверх
Muerto
Дата 17.7.2010, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



И это очень стоит почитать http://habrahabr.ru/blogs/php/46032/

Цитата: . Дополнительная информация так же может быть сохранена в куках. В случае если требуется сохранить большие объёмы данных, их можно уложить в базу данных, авторизационную информацию стоит оставить в куках.

Это сообщение отредактировал(а) Muerto - 17.7.2010, 16:04


--------------------
user posted image
PM MAIL   Вверх
gcc
Дата 17.7.2010, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: -1
Всего: 17



Muerto, вот тут вот написано: http://www.ibm.com/developerworks/ru/library/wa-aj-resttip/

Цитата

Получение последних данных

У меня и моего коллеги, Мики Тебека (Miki Tebeca) был опыт разработки Web-приложения, которое постоянно опрашивало сервер на предмет обновления данных. Запросы выполнялись через объект XMLHttpRequest() в JavaScript. Пример сервера, написанного на Python, который будет продемонстрирован ниже, по сути является упрощенной и доработанной версией внутреннего модуля, созданного Мики.

В данной ситуации перед нами встают две проблемы. Во-первых, необходимо избежать передачи значительного объема данных в случае, если не произошло никаких изменений со времени предыдущего запроса. Во-вторых, необходимо минимизировать нагрузку на базу данных и расходование других вычислительных ресурсов, связанные с дублированием данных.

Средства для решения первой проблемы предоставляются непосредственно протоколом HTTP, хотя этим полезным решением неоправданно пренебрегают. При отсутствии изменений сервер может (и должен) возвращать в HTTP-ответе код состояния 304. Далее Ajax-приложение должно проверять данный код и в случае его наличия не обновлять клиентское состояние, так как сервер не переслал новых данных.

Проблема, связанная с ресурсами сервера, может быть решена путем кэширования ранее полученных данных и их обновления по мере работы приложения. Этот вариант решения, как правило, подходит только в том случае, если «последние данные» представляют собой относительно небольшой дискретный набор записей, а не единый массив взаимосвязанных данных. Далее мы будем отслеживать кэшированное состояние сессии приложения-клиента при помощи клиентского объекта cookie, как показано в листинге 1.

Листинг 1. Код сервера с использованием сессий (server.cgi)

from datetime import datetime
session = ClientSession()
old_stuff = session.get("data", [])   # Обращение к кэшу
last_query = session.get("last", None)
prune_data(old_stuff, last_query)     # Отбрасывание устаревших данных
new_stuff = get_new_stuff()           # Получение свежих данных

if not new_stuff:
    print "Status: 304"               # Код состояния "ничего не изменилось"
else
    print session.cookie              # Печать нового или ранее созданного объекта cookie
    print "Content-Type: text/plain"
    print
    all_stuff = old_stuff + new_stuff
    session["data"] = all_stuff
    session["last"] = datetime.now().isoformat()
    print encode_data(all_stuff)      # XML, JSON или что-то еще...
session.save()


Определенную часть работы по управлению сессией берет на себя класс ClientSession, но он довольно прост. Фактически все, что требуется – это проверять каждого клиента на наличие объекта cookie, соответствующего данным, хранящимся в переменной old_stuff (листинг 2).

Листинг 2. Управление сессией

from os import environ
from Cookie import SimpleCookie
from random import shuffle
from string import letters
from cPickle import load, dump

COOKIE_NAME = "my.server.process"

class ClientSession(dict):
    def __init__(self):
        self.cookie = SimpleCookie()
        self.cookie.load(environ.get("HTTP_COOKIE",""))

        if COOKIE_NAME not in cookie:
            # Real UUID would be better
            lets = list(letters)
            shuffle(lets)
            self.cookie[COOKIE_NAME] = "".join(lets[:15])

        self.id = self.cookie[COOKIE_NAME].value
        try:
            session = load(open("session."+self.id, "rb"))
            self.update(session)
        except:       # Если кэш пуст, то не обновляем сессию
            pass

    def save(self):
        fh = open("session."+self.id, "wb")
        dump(self.copy(), fh, protocol=-1)  # Сохранение сессии
        fh.close()




PM WWW ICQ Skype GTalk Jabber   Вверх
ksnk
Дата 17.7.2010, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



gcc, то есть REST - это просто возможность не передавать не обновленные данные клиенту? как это поможет избежать куков и сессии?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
gcc
Дата 17.7.2010, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: -1
Всего: 17



ksnk, ну я ссылки привел там где рассказывается, и вот тут вот человек писал что можно не использовать сессии пхп и использовать REST http://forum.vingrad.ru/topic-199324/view-.../p-1433929.html smile

не надо хранить сессиии на сервере не в файла и не в базе, что не много экономит ресурсы... и не надо пароли ставить в cookie...
(вродебы где-то было написано что можно и с выключенными cookie и не хранить на сервере сессии...)

для обычных сайтов - достаточно обычные сессии
вродебы, это ТС ищет реализацию, а не я... smile

Это сообщение отредактировал(а) gcc - 17.7.2010, 17:15
PM WWW ICQ Skype GTalk Jabber   Вверх
Photon
Дата 18.7.2010, 02:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злобный программер
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 27.2.2009
Где: Таганрог

Репутация: 10
Всего: 12



Блин, ну я прямо не знаю.. 
Muerto, ты задаешь вопрос, тебе на него отвечают, а ты упорно стоишь на своём мнении..  Так нафига тогда вопрос задавать..
Объяснили же..  В сессии надо хранить максимум id пользователя..  Пользователь закрыл браузер, сессия сдохла..  После этого надо авторизоваться заново..  Если необходим постоянный вход, то можно совершенно любую белиберду в куки сохранить и одновременно в базу (желательно, чтоб эта белиберда была уникальна и зависела от каких-либо данных пользователя, включая IP, агент и прочее)


--------------------
With best regards..
PM MAIL ICQ Skype GTalk Jabber   Вверх
Muerto
Дата 18.7.2010, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Photon, Да я не против, я все выслушал и думаю как делать.

Добавлено @ 10:34
Кстати раз тут уже обсуждают разницу в куках или сессиях

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

И в пользу кукис есть новый прикол
Код

When TRUE the cookie will be made accessible only through the HTTP protocol. 
This means that the cookie won't be accessible by scripting languages, such as JavaScript. 
This setting can effectively help to reduce identity theft through XSS attacks (although it is not supported by all browsers). 
Added in PHP 5.2.0. TRUE or FALSE

http://php.net/manual/en/function.setcookie.php

И ещё один момент... я не уверен что тот кто это написал прав но все же
Код

By deleting cookies you should think server side too.

In this example:

<?php
// set the expiration date to one hour ago
setcookie ("TestCookie", "", time() - 3600);
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".example.com", 1);
?>

deletes just client side cookies.

You should use bellow example to delete both client and server side cookies:

<?php
// set the expiration date to one hour ago
setcookie ("TestCookie", "", time() - 3600);
unset($_COOKIE['TestCookie']);
// or
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".example.com", 1);
unset($_COOKIE['TestCookie'];
?>


что это за куки на serverside есть? ведь вся идея кук что инфу храним у клиента, или я что то упустил?

Это сообщение отредактировал(а) Muerto - 18.7.2010, 10:42


--------------------
user posted image
PM MAIL   Вверх
Photon
Дата 18.7.2010, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злобный программер
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 27.2.2009
Где: Таганрог

Репутация: 10
Всего: 12



Цитата(Muerto @  18.7.2010,  11:31 Найти цитируемый пост)
что это за куки на serverside есть? ведь вся идея кук что инфу храним у клиента, или я что то упустил?

Тут имеется в виду, что до завершения скрипта куки будут еще действовать..  Они-то передаются на сервер браузером при запросе..
Поэтому если ты их где-то ниже по ходу выполнения используешь, то неплохо бы их удалять из $_COOKIE


--------------------
With best regards..
PM MAIL ICQ Skype GTalk Jabber   Вверх
ksnk
Дата 18.7.2010, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(Muerto @  18.7.2010,  10:31 Найти цитируемый пост)
я не уверен что тот кто это написал прав но все же

Видимо, автор примера считает, что после кода удаления куки может исполнятся еще другой код, который будет думать, что кука все еще жива $_COOKIE['TestCookie'] установлен, так что пристрелить эту переменную может оказаться полезно для душевного здоровья. Хотя в следующей итерации исполнения скрипта кука исчезнет сама...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0571 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.