| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Закрытие сайта, событие в php ? |
| Автор: Sun_ok 2.12.2009, 16:23 |
| Здравствуйте. Есть страница пользователя, временные данные которого хранятся в базе, в кукисах или сесси не подходит, так-как это текст, который пользователь загружает с машины, и работает в нем на сайте, текст может быть временным и постоянным, и все интсрументы работают с базой, поэтому временный текст тоже заливаются в базу. Естественно после завершения работы текст из базы нужно удалять, хорошо если пользователь нажал Exit или сработал onbeforeunload в JS, но что делать если браузер закрылся критически ? Как можно отследить, есть ли связь с клиентом или уже нет ? |
| Автор: Ипатьев 2.12.2009, 16:28 |
| Это очень легко. Прокручиваем свой скрипт вниз, и в последней строчке пишем echo "Связь с клиентом разоравана"; |
| Автор: skyboy 2.12.2009, 18:01 |
| а в таком случае не надо использовать http://ua2.php.net/manual/en/function.ignore-user-abort.php? |
| Автор: Pitlord 2.12.2009, 18:06 |
| Для таких целей нужно добавить в таблицу, содержащую временные данные, поле, хранящее timestamp создания строки. Позже неактуальные (устаревшие) данные удаляются. |
| Автор: Sun_ok 2.12.2009, 19:14 |
| Pitlord Да, похоже это наиболее нормальный вариант, кроном раз в день проверять да и все, но ignore_user_abort мне не дает покоя, не могу с ним разобраться. skyboy Спасибо за "ignore_user_abort" буду копать. |
| Автор: Sun_ok 2.12.2009, 20:27 | ||
А как регулярно поверять возраст полей ?
Пребывание на сайте ! |
| Автор: Ипатьев 2.12.2009, 20:36 |
То есть, вы предполагаете, что если пользователь открыл сайт у себя в браузере и после этого сервер выключили, то страница в браузере пропадет? |
| Автор: Sun_ok 2.12.2009, 20:48 | ||
Вы правы, наверно нужно по другому сформулировать задачу. Человек зашел, запустилась сессия, человек вышел, через какой-то промежуток времени сессия закрылась, возможно ли запустить свой скрипт при закрытии сессии или проверять на ее существование ? |
| Автор: Pitlord 2.12.2009, 21:07 | ||
|
| Автор: Sun_ok 2.12.2009, 21:37 |
Это понятно, но задача в том чтобы регулярно это делать, можно конечно с юзер запроса это делать, но как-то не красиво. |
| Автор: Pitlord 2.12.2009, 21:45 | ||
Почему некрасиво? Зачем что-то удалять, если на сайт никто не заходит? |
| Автор: Sun_ok 2.12.2009, 22:25 |
| Тут специфика, на сайт может заходить хоть 1000 человек, но не использовать свои данные, и 1000 раз пускать запрос на очистку пустой таблицы, как-то нецелесообразно, или допустим если запускать проверку от тех пользователей которые загрузили свой текст, тогда данные буду лежать пока следующий юзер не воспользуется этим сервисом. |
| Автор: Pitlord 2.12.2009, 22:27 | ||
Сделай timestamp общий для сайта, содержащий дату последней очистки. Если последняя очистка была давно — выполняй запрос и обновляй timestamp. |
| Автор: Sun_ok 2.12.2009, 22:36 | ||
Это уже вариант, спасибо ! |