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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Закрытие сайта, событие в php ? Очистка данных пользователя перед выходо 
:(
    Опции темы
Sun_ok
Дата 2.12.2009, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте.
Есть страница пользователя, временные данные которого хранятся в базе, в кукисах или сесси не подходит, так-как это текст, который пользователь загружает с машины, и работает в нем на сайте, текст может быть временным и постоянным, и все интсрументы работают с базой, поэтому временный текст тоже заливаются в базу.
Естественно после завершения работы текст из базы нужно удалять, хорошо если пользователь нажал Exit или сработал onbeforeunload в JS, но что делать если браузер закрылся критически ? 
Как можно отследить, есть ли связь с клиентом или уже нет ?  
PM MAIL WWW   Вверх
Ипатьев
Дата 2.12.2009, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 28
Всего: 37



Это очень легко.
Прокручиваем свой скрипт вниз, и в последней строчке пишем 
echo "Связь с клиентом разоравана";



PM MAIL   Вверх
skyboy
Дата 2.12.2009, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



а в таком случае не надо использовать ignore_user_abort?
PM MAIL   Вверх
Pitlord
Дата 2.12.2009, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Для таких целей нужно добавить в таблицу, содержащую временные данные, поле, хранящее timestamp создания строки. Позже неактуальные (устаревшие) данные удаляются.

Это сообщение отредактировал(а) Pitlord - 2.12.2009, 18:08
PM MAIL   Вверх
Sun_ok
Дата 2.12.2009, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Pitlord  Да, похоже это наиболее нормальный вариант, кроном раз в день проверять да и все, но ignore_user_abort мне не дает покоя, не могу с ним разобраться.
skyboy Спасибо за "ignore_user_abort"  буду копать.
PM MAIL WWW   Вверх
Pitlord
Дата 2.12.2009, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Sun_ok @  2.12.2009,  19:14 Найти цитируемый пост)
Pitlord  Да, похоже это наиболее нормальный вариант, кроном раз в день проверять да и все, но ignore_user_abort мне не дает покоя, не могу с ним разобраться.

Зачем cron'ом?

Цитата(Sun_ok @  2.12.2009,  16:23 Найти цитируемый пост)
Как можно отследить, есть ли связь с клиентом или уже нет ?   

Чтобы не было недопониманий: что ты понимаешь под "связью с клиентом"? Процесс загрузки страницы или просто пребывание на сайте?
PM MAIL   Вверх
Sun_ok
Дата 2.12.2009, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Pitlord @  2.12.2009,  19:31 Найти цитируемый пост)
Зачем cron'ом?

А как регулярно поверять возраст полей ? 

Цитата(Pitlord @  2.12.2009,  19:31 Найти цитируемый пост)
Чтобы не было недопониманий: что ты понимаешь под "связью с клиентом"? Процесс загрузки страницы или просто пребывание на сайте? 

Пребывание на сайте !
PM MAIL WWW   Вверх
Ипатьев
Дата 2.12.2009, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 28
Всего: 37



Цитата(Sun_ok @  2.12.2009,  20:27 Найти цитируемый пост)
Пребывание на сайте ! 

То есть, вы предполагаете, что если пользователь открыл сайт у себя в браузере и после этого сервер выключили, то страница в браузере пропадет?
PM MAIL   Вверх
Sun_ok
Дата 2.12.2009, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Ипатьев @  2.12.2009,  20:36 Найти цитируемый пост)
То есть, вы предполагаете, что если пользователь открыл сайт у себя в браузере и после этого сервер выключили, то страница в браузере пропадет? 


Вы правы, наверно нужно по другому сформулировать задачу. 
Человек зашел, запустилась сессия, человек вышел, через какой-то промежуток времени сессия закрылась, возможно ли запустить свой скрипт при закрытии сессии или проверять на ее существование ? 

PM MAIL WWW   Вверх
Pitlord
Дата 2.12.2009, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Sun_ok @  2.12.2009,  20:27 Найти цитируемый пост)
А как регулярно поверять возраст полей ? 

Код

DELETE FROM `tbl` WHERE `expire_date` < UNIX_TIMESTAMP();

PM MAIL   Вверх
Sun_ok
Дата 2.12.2009, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Pitlord @  2.12.2009,  21:07 Найти цитируемый пост)
    
DELETE FROM `tbl` WHERE `expire_date` < UNIX_TIMESTAMP();

Это понятно, но задача в том чтобы регулярно это делать, можно конечно с юзер запроса это делать, но как-то не красиво.
PM MAIL WWW   Вверх
Pitlord
Дата 2.12.2009, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Sun_ok @  2.12.2009,  21:37 Найти цитируемый пост)
Это понятно, но задача в том чтобы регулярно это делать, можно конечно с юзер запроса это делать, но как-то не красиво. 

Почему некрасиво? Зачем что-то удалять, если на сайт никто не заходит?
PM MAIL   Вверх
Sun_ok
Дата 2.12.2009, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

Это сообщение отредактировал(а) Sun_ok - 2.12.2009, 22:25
PM MAIL WWW   Вверх
Pitlord
Дата 2.12.2009, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Sun_ok @  2.12.2009,  22:25 Найти цитируемый пост)
Тут специфика, на сайт может заходить хоть 1000 человек, но не использовать свои данные, и 1000 раз пускать запрос на очистку пустой таблицы, как-то нецелесообразно, или допустим если запускать проверку от тех пользователей которые загрузили свой текст, тогда данные буду лежать пока следующий юзер не воспользуется этим сервисом.

Сделай timestamp общий для сайта, содержащий дату последней очистки. Если последняя очистка была давно — выполняй запрос и обновляй timestamp.

Это сообщение отредактировал(а) Pitlord - 2.12.2009, 22:28
PM MAIL   Вверх
Sun_ok
Дата 2.12.2009, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Pitlord @  2.12.2009,  22:27 Найти цитируемый пост)
Сделай timestamp общий для сайта, содержащий дату последней очистки. Если последняя очистка была давно — выполняй запрос и обновляй timestamp.

Это уже вариант, спасибо !
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0586 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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