LINUX.ORG.RU

[php][передача объектов] Как правильно?

 


0

0

И так. Имеем запрос к сайту на получение информации.
Потом сохраняем полученую информацию в объект.
Вот и вопрос.
Как таскать объект через сессию?
С помощью serialize?
Сохранить в файл и загружать объект из файла?

з.ы. проект не использует бд. всю информацию берет с сайта, кол-во пользователей не больше 5-6 человек. Но хочется снизить кол-во лишних запросов. Т.К. важна скорость.

★★★

Последнее исправление: fjfalcon (всего исправлений: 1)
Ответ на: комментарий от mobile

Это то я все знаю. А если кол-во переменных в объекте уползет за ограничение сессии? И тут вопрос все таки что разумнее - использовать serialize, использовать хранение в файлах или есть еще варианты?

fjfalcon ★★★
() автор топика
Ответ на: комментарий от fjfalcon

Если объекты однотипные напиши свой serialize или что-то вроде function __toString() для того, чтобы исключить лишние данные и метод, который из твоей строки будет создавать объект.

Конечно, когда у тебя все в сессию не влазит информацию начинают хранить в базе/файлах/оперативной памяти.

mobile
()

у меня в Java EE он таскается через память, с использованием передачи ссылки в POST.

drakmail ★★★★
()
Ответ на: комментарий от fjfalcon

>А если кол-во переменных в объекте уползет за ограничение сессии?

А такие объекты точно не требуют рефакторинга? :)

И тут вопрос все таки что разумнее - использовать serialize, использовать хранение в файлах или есть еще варианты?


Я у себя использую serialize для сохранения в кеше БД или memcached. Точно также можно и в файлы класть.

KRoN73 ★★★★★
()
Ответ на: комментарий от trashymichael

>неужели нельзя типо прозрачно это сделать ?

Давай чётче задачу формировать. Что за объекты такие, что в сессию не лезут? Там что, огромные блобы? Тогда их - в файл.

Что за нагрузка, что в БД совать нельзя? Если менее 1000 запросов в секунду, то можно и забить, не занимаясь преждевременной оптимизацией...

KRoN73 ★★★★★
()
Ответ на: комментарий от trashymichael

>но вот ты считаешь что в сессию писать сериализованные объекты это кошерно?

Сам так не делаю, надобности не было, но почему бы и нет, если понадобится? :) Не вижу ничего некошерного.

KRoN73 ★★★★★
()
Ответ на: комментарий от urxvt

>А почему просто в сесию не положить объект? Зачем его сериализировать?

Чтобы объект оторвать от рантайма PHP, его нужно сериализовать. Явно или неявно.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

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

trashymichael ★★★
()
Ответ на: комментарий от trashymichael

Да нет же.
Я точно не помню, там только один момент был с инклудом файла с классом. Там он должен до стартсешн идти, вроде.

urxvt ★★★★★
()
Ответ на: комментарий от urxvt

>Постоянно клал юзера без проблем.

Я же сказал - явная или _неявная_ сериализация :) Когда ты сохраняешь объект в сессию (или тот же memcached), то сериализация происходит неявно. Пропиши трейс вызовов __sleep() - увидишь.

KRoN73 ★★★★★
()
Ответ на: комментарий от trashymichael

>ну вот есть мазагин, в магазине корзина, корзина в сессии, добавил ты в корзину товар, товар удалили из магазина, что дальше?

Вот поэтому я храню в сессии обычно не объект, а связку class_name + object_id. Но часто объекты можно хранить в сессии и целиком.

В общем, как и всюду, требуется использование мозга :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

>Более 10 лет назад. В 4-й версии.

Ого. Не знал.

А дефолтный серилизатор как в Java появится через следующие 10 лет ? В смысле маркерного интерфейса Serializable, transient-полей, ObjectStream-ов и т.д.

ef37 ★★
()
Ответ на: комментарий от mobile

>толсто, ты даже не представляешь сколько всего умеет php

Ну нифига себе, и unicode тоже умеет ? И давно ?

ef37 ★★
()
Ответ на: комментарий от ef37

> Разве что через mb_костыли

Все на mb давно, я думал обычные функции работы со строками уже никто не использует.

mobile
()
Ответ на: комментарий от KRoN73

>Зачем из PHP делать Java, если уже есть Java?

Встречный вопрос: зачем нужен php, если есть Java ? С тем же unicode, сериализацией ... и пр.

ef37 ★★
()
Ответ на: комментарий от ef37

>Встречный вопрос: зачем нужен php, если есть Java ?

- Другая идеология построения сервера (запуск изолированного рантайма при каждом обращении)
- Более простой процесс написания и отладки
- Большая распространённость на хостингах
- Более простая виртуализация и разделение прав доступа на массовых хостингах
- Динамика против статики.
- И т.д. и т.п.

С тем же unicode, сериализацией ... и пр.


Так и в PHP с этим никаких проблем :) Также, как нет и, скажем, проблем с утечками памяти ;)

...

Я, как бы, сам не один год программировал и на Java, и на PHP. Так что знаю массу достоинств и недостатков Java. И вполне уважаю этот язык, где-то даже люблю :D Но сайты пишу сегодня на PHP. В разных нишах эффективны разные языки.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

>Я, как бы, сам не один год программировал и на Java, и на PHP. Так что знаю массу достоинств и недостатков Java. И вполне уважаю этот язык, где-то даже люблю :D Но сайты пишу сегодня на PHP. В разных нишах эффективны разные языки.

Я дальше PHP4 в свое время не ушел :-) И ведь есть Perl, чем он хуже ?

ef37 ★★
()
Ответ на: комментарий от ef37

> Я дальше PHP4 в свое время не ушел :-) И ведь есть Perl, чем он хуже ?

Perl нечитаем вообще

mobile
()
Ответ на: комментарий от ef37

>И ведь есть Perl, чем он хуже ?

Ну, я 8 лет назад с Perl'а на PHP перелез по прозаической причине. mysql_* функции в PHP работали в 9(!) раз быстрее, чем через DBI в Perl :) Так что, не смотря на то, что числодробильно PHP сливал тогда Perl'у вдвое, пришлось переходить на PHP.

...

Ну а потом накопилось много кода и оказалось, что на PHP его [годы спустя] поддерживать много проще, чем на Perl'е :)

KRoN73 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.