Вы всегда можете использовать команду Timer
и сравнить время, чтобы получить разницу. Проблема заключается в том, что классический ASP является однонаправленным на стороне сервера, что означает, что он не имеет двустороннего соединения с клиентом. Обмен данными с сервером происходит только при загрузке или обновлении страницы. Вы можете включить некоторые параметры javascript, которые позволят выполнять некоторые транзакции без перезагрузки страницы. Метод, использующий базу данных для отслеживания времени, будет полезен, потому что каждый раз, когда вы перезагружаете страницу, Timer
будет сбрасываться.
<% 'Variables
dim StartTime, StopStop, HowLong
'set the StartTime
StartTime = Timer
'your function goes here
'set the StopTime
StopTime = Timer 'stops the timer
'set HowLong to be equal to StopTime subtract Start Time
HowLong = StopTime - StartTime
'Display the results to screen
Response.Write ("It took " & HowLong & " seconds to complete.")
%>
Теперь этот сценарий должен был показать вам, как вы можете отслеживать, сколько времени прошло. Я думаю, что объяснил ограничения вашей проблемы с ASP Classic только на стороне сервера, поэтому вам нужно будет использовать метод, подобный тому, который вы думали о том, где вы постоянно выводите эту переменную HowLong и сравниваете ее с базой данных.
И последнее, что следует учитывать: переход со страницы или обновление страницы вызовет повторный запуск сценария, поэтому вам нужно будет принять некоторые меры по отказоустойчивости, чтобы избежать нежелательных обратных сообщений или других осложнений, поскольку мы не знаем, что делает ваш сценарий. . Если вы дадите мне дополнительную информацию, я смогу дать больше советов, но, не видя, что делает ваш код, я надеюсь, что этого достаточно, чтобы указать вам правильное направление.
РЕДАКТИРОВАТЬ. Еще одна мысль: вы можете использовать объект Session
для хранения данных между загрузками страницы. Вы можете использовать это, чтобы сравнить таймер с таймером в базе данных. Session
объекты также защищены и не могут быть изменены пользователем вручную, поэтому это будет безопасный способ передачи данных между загрузками страниц. Вот пример кода о том, как сохранить переменную Session
и извлечь из нее. Давайте представим, что мы используем оба скрипта одновременно, чтобы я мог передать и сохранить HowLong в переменную Session
. Хотя вам потребуется база данных, поскольку она не является долговременным хранилищем, срок ее действия истечет через несколько минут, и вы можете указать, как долго они должны храниться, если вы хотите, чтобы они длились долгое время даже во время простоя. Теперь к коду.
<%
'store into a session variable
HowLong = Session("HowLong")
'read from a session variable
Session("HowLong") = HowLong
%>
Надеюсь, что редактирование добавило дополнительный бит, который вам может понадобиться. Я думаю, что в основном просто объяснил процесс того, как делать то, что они говорили. Если вы включите метод Session
, вы можете использовать его для хранения данных, поэтому вам нужно будет только записывать или читать из базы данных каждые несколько минут или около того.
OHH EDIT - я забыл упомянуть, что Timer
вычисляется в секундах или сколько секунд прошло с даты в 80-х годах. Таким образом, хотя вы можете сравнивать даты и метки времени, чтобы получить время, если вы пытаетесь увидеть, как долго что-то началось и остановилось, Timer
— это самый простой метод, не беспокоясь о типах данных или чем-то подобном. И последнее, что касается переменных сеанса: если вы закроете браузер, они перестанут работать. Я не думаю, что это относится к вкладкам, но любопытно узнать. Но если вы используете этот метод таймера, базы данных, сеанса, он может отслеживать, когда он запускается, но проблема заключается в том, чтобы определить точное время отключения без постоянных проверок базы данных. Это похоже на то, что вам лучше, возможно, использовать что-то в javascript или Asp.net, чтобы сделать это незамысловатым способом, но я знаю, что это не всегда возможно, но с предоставленной информацией я попытался предложить некоторые рекомендации, которые, надеюсь, помогло, но вы видите, что проблема в том, что он не может ничего обновить на сервере без ввода пользователя, и единственный вход - это закрытие окна пользователем, и это не то, что ASP обнаруживает напрямую, а с помощью переменной сеанса и постоянные проверки БД, вы могли бы собрать что-то вместе, что могло бы сработать.
person
easleyfixed
schedule
14.05.2021
Softwing.Profiler
component и даже создавали пользовательский класс, который использовал его для определения времени действий в сеансе. Очень полезный компонент COM. - person user692942   schedule 13.05.2021