Проблема с тайм-аутом в классическом ASP

#vbscript #msxml

#sql-сервер #sql-server-2005 #vbscript #asp-classic #adodb

Вопрос:

Я работаю над классическим проектом ASP, где у меня возникает проблема с тайм-аутом при заполнении данных из базы данных и привязке их к пользовательскому интерфейсу. Мы получили следующую ошибку: Время ожидания скрипта Было превышено Максимальное количество времени для выполнения скрипта tp. Вы можете изменить это ограничение, указав новое значение для свойства Server.Scripttimeout или изменив значение в инструментах администрирования IIS

Чтобы решить проблему, мы попытались выполнить разбивку на страницы, но это не увенчалось успехом. На одной странице есть несколько форм с отдельными именами (т. Е. form1 , form2 ). Мы внедрили Recordset разбивку на страницы в одной конкретной форме. Наряду с параметрами редактирования и удаления нумерации страниц также доступны для конкретной записи в наборе записей. Проблема, с которой мы сталкиваемся, заключается в том, что когда мы пытаемся отредактировать запись, значения формы не попадают на опубликованную страницу.

Я упомянул фрагмент кода, приведенный ниже:

 Function someFunction
  data1=""
  <form name="Xyz" method="post" action="edit.asp">
  s=samp;"<script>function relsubmit() {alert(" amp; data1 amp;"); rjob.submit(); } </script>"
  'Pagination code display only 30 records per page
  Do While Not ( rss.Eof Or rss.AbsolutePage <> iPage )
    'some code
    If (Action="RELEdit") Then
      s=samp;"" amp; drsel amp;""
      s=samp;"
      s=samp;"" amp; clean(rss.Fields(4).value) amp; ""
    Else
    End If
    datadr1=datadr1amp; rss.Fields(0).value amp; ","
    rss.MoveNext 
  loop
  If (Action="RELEdit") then
    s=samp;"<input type=hidden name=data1 value=""" amp; datadr1 amp; "">"
    s=samp;"<input type=hidden name=data2 value=""" amp;datadr2 amp; """><</form>"
  End If
End Function
  

Мы попытались получить значение на странице edit.asp, используя request.form("data1") значения, которые приходят пустыми, также мы попробовали alert в relsubmit() функции, которая отображается как пустая.

Можете ли вы, пожалуйста, помочь мне, почему значения формы публикуются как null или empty. Кроме того, пожалуйста, сообщите мне, есть ли у нас какие-либо другие подходы для отслеживания тайм-аута.

Комментарии:

1. Действительно сложно сказать, не имея более подробной информации о запросе и его производительности, но, на мой взгляд, вам следует отказаться от идеи извлечения многих записей и попытаться представить их своим пользователям. Изучите разумные способы фильтрации, потому что обычно маловероятно, что пользователи перейдут на страницу за пределами 3-й страницы результатов.

2. Все зависит от того, что представляет собой ваша база данных и методы, которые вы используете для восстановления данных. Просто сказать «Я работаю над классическим проектом ASP, где у меня возникает проблема с тайм-аутом при заполнении данных из базы данных и привязке их к пользовательскому интерфейсу». не дает нам никакой важной информации, также вы не показываете никакого кода. Это поощряет догадки, и вы, скорее всего, не получите искомый ответ.

3. @Filburt Это зависит от того, для чего он используется, является ли система заказов на поставку общедоступным веб-сайтом и т.д. Вы не можете размещать каждый проект с одинаковым набором значений.

4. @Lankymart, что не так с s = s amp; "" amp; drsel amp; "" ? «» — это просто пустые строки и поверхностные, но это не приведет к сбою.

5. @Lankymart, да, тег формы не такой, и в этом коде много других странностей.

Ответ №1:

Поместите этот код в верхней части страницы ASP, которую вы запускаете. Значения указаны в секундах (300 = 60 * 5 = 5 минут) Это увеличит время выполнения скрипта до 5 минут. Вы можете установить любое значение, даже часы

 <%Server.ScriptTimeout=600%>
  

Комментарии:

1. Этот сценарий разрешает только проблему с тайм-аутом. Это позволяет вашему коду выполняться столько времени, сколько вы установили, чтобы он мог обработать отчет. Я написал код ASP, который выполняется более 1 часа для создания отчета.

2. Гордиться нечем.

3. Server.ScriptTimeout и отчеты об индексации (путем оптимизации данных) — это совершенно разные темы, поэтому я повторяю «Как это улучшит производительность?» Ответ: это не так, просто дайте сценарию работать дольше, что не является решением в моей книге.

4. Для вашего кода попробуйте разделить процессы. (1) Сначала заполните набор записей, если ваша разбивка на страницы не удалась, временно откажитесь и напишите сценарий для выбора всего нескольких записей (2) Добавьте свою кнопку редактирования в строки набора записей. При нажатии кнопки редактирования заполните форму выбранными записями. (3) При нажатии кнопки отправки формы выполняется операция редактирования записи.

5. Это сделало бы ответ более округлым.