Создание основанного на времени триггера в PHP - PullRequest
0 голосов
/ 04 октября 2011

Например, если я хочу установить триггер, который срабатывает каждый час, прошедший с текущего времени, как бы я это реализовал?

Я использую PHP для написания своего внутреннего кода, по сути, если пользователь вошел в систему, я даю sessionID, если нет активности каждый час, то время ожидания сеанса. Я думаю, что это должно быть реализовано в PHP, верно?

Ответы [ 4 ]

4 голосов
/ 04 октября 2011

Для запуска сценария используется планировщик заданий cron.

Для Windows вы можете попробовать Windows Task Scheduler . Предоставляет аналогичную функциональность.


На самом деле, вам не нужно cron, чтобы сделать это.

Поскольку вы хотите завершить сеанс, если пользователь был неактивен в течение одного часа, как вы можете это сделать.

  • Когда пользователь посещает любую страницу, обновите переменную $_SESSION текущим временем.
  • После того, как пользователь перейдет на новую страницу, проверьте, если current_time - last_time > 1 hour. Если это так, завершите сеанс и перенаправьте их.
2 голосов
/ 04 октября 2011

Вы должны делать это с помощью скриптов cron, а не на PHP. Работа PHP-скриптов в течение нескольких часов - плохая практика.

1 голос
/ 04 октября 2011

Нет необходимости в планировании работы здесь.Когда вы даете им идентификатор сеанса, сохраняйте идентификатор сеанса в таблице в вашей базе данных.Затем делайте это при каждом отдельном запросе:

if session id row is found
    if current time - last updated time > 1 hour
        Do not allow access. Session is expired
    else
        update timestamp of session id row, setting it to the current time
        allow access
    end
end

По существу: каждый раз, когда пользователь запрашивает что-либо, вы можете обновить поле метки времени в строке этого сеанса в вашей базе данных.Если текущее время - последнее обновленное время> 1 часа, то сеанс является недействительным, и вам не следует разрешать доступ.

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

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

https://www.owasp.org/index.php/Session_Management_Cheat_Sheet

1 голос
/ 04 октября 2011

либо установите задание cron, которое выполняется ежечасно, либо вместо этого установите код, который задним числом вычисляет то, что нужно рассчитать с момента предыдущего посещения.

было бы очень полезно, если бы вы описали, кто выпытаясь выполнить более подробно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...