удалять информацию из таблицы mysql, когда пользователь закрывает свой браузер

im, создавая две таблицы (в mysql) с именем

  1. table_temp_guest
  2. table_temp_order

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

теперь мой вопрос:

im, используя идентификатор сеанса, поэтому, когда пользователь переходит к выходу из системы (без проверки), я удаляю его информацию (личный и заказ) из обеих таблиц) с использованием идентификатора сеанса, НО если он закрывает браузер или не переходит на проверку (любой резонанс) то как удалить его информацию из обеих таблиц, пожалуйста, предложите мне, как это сделать?

Дополнительный вопрос: есть ли другой способ сделать весь этот процесс каким-либо другим способом.

Вы не можете обнаружить, когда пользователь закрывает браузер или вводит новый адрес. Вам в основном нужно иметь «тайм-аут», как и остальные веб-сайты.

Существует событие window.onunload которое вы можете обнаружить с помощью javascript, но оно не поддерживается повсеместно, и оно обнаруживает закрытие окна , а не закрытие браузера.

Лучшее разрешение, вероятно, будет отслеживать session_id и дату последнего доступа. Повторно обновите last_accessed_date таблицы при каждой загрузке страницы и удалите все, что старше нескольких часов.

Наилучшим методом будет тайм-аут.

Запишите последнее активное время в гостевой таблице. Периодически выполняйте задание cron на сеансах очистки веб-сервера, которые превышают максимальное время, которое вы хотите разрешить.

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

Если вы все равно используете session_id () (я думаю, это то, что вы подразумеваете под идентификатором сеанса), просто используйте сеансы php. PHP автоматически делает их недействительными, и вам не нужны эти две таблицы (вы можете хранить все, что вам нужно, в $ _SESSION).

Невозможно проверить, не был ли броузер не закрыт, на который можно положиться.

Если вы не хотите изменять способ работы вашего проекта, просто добавьте созданное поле в таблицы и установите его на текущее время (), когда вы «видите» конкретного пользователя. Затем настройте cronjob, который удаляет все записи из этой таблицы, которые старше определенного тайм-аута.

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

Для этого вы добавили бы поле ModifiedDate в свои таблицы, вы можете установить его как поле «ON UPDATE» для удобства использования, а затем просто удалить все записи, у которых есть поле ModifiedDate старше более чем на несколько часов.