Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Ошибка в коде. Всем, кто разбирается / 9 сообщений из 9, страница 1 из 1
24.09.2004, 07:33
    #32709594
Solka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в коде. Всем, кто разбирается
Народ! плз помогите найти ошибку. Вроде все правильно делаю...
У меня есть файлик текстовый, когда к нему обращаешься для того чтобы перенести данные в другой файл или вовсе удалить (action=del) - он долго, долго грузится, а потом выдает вот эту ошибку:
Error Type:
Active Server Pages, ASP 0113 (0x80004005)
The maximum amount of time for a script to execute was exceeded. You can change this limit by specifying a new value for the property Server.ScriptTimeout or by changing the value in the IIS administration tools.
/site/ind_news_4.asp

Вот сам код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
<%
Dim fs 
Set fs = CreateObject("Scripting.FileSystemObject")

	action = Request.QueryString("action")
	Set f_gb = fs.OpenTextFile("c:\news.txt",  1 ,  0 )
	gb_id = f_gb.ReadLine
	last_id = CInt(Right(gb_id, Len(gb_id)- 1 ))
	f_gb.Close
	Set f_gb = Nothing
			gb_nid = CInt(Request.QueryString("number"))
			  
if (action="del") and (Request.QueryString("number")<>"") then 
          s="0"
			Set f_gb_old = fs.OpenTextFile("c:\news.txt",  1 ,  0 )
			gb_id = f_gb_old.ReadLine
			While not f_gb_old.AtEndOfStream
  			If (gb_id=gb_nid) then 
			s="1"
			gb_thema = f_gb_old.ReadLine
			gb_tfile = f_gb_old.ReadLine	
			End if
			Wend
			f_gb_old.Close
			Set f_gb_old = Nothing
			
If (s="1") then
		
		temp = ""
		For i =  1  to len(gb_tfile)
			If left(gb_tfile,  1 ) = "#" then
				temp = temp + "№"
			Else
				temp = temp + left(gb_tfile,  1 )
			End If
			gb_tfile = right(gb_tfile, len(gb_tfile) -  1 )
		
		gb_tfile = temp

		Next


		Set f_gb_new = fs.CreateTextFile("c:\news_tmp.txt", True)	
			Set f_gb_old = fs.OpenTextFile("c:\news.txt",  1 ,  0 )
			While not f_gb_old.AtEndOfStream
				gb_id = f_gb_old.ReadLine 
				gb_id = CInt(Right(gb_id, Len(gb_id)- 1 ))
				if not f_gb_old.AtEndOfStream then gb_thema = f_gb_old.ReadLine
				if not f_gb_old.AtEndOfStream then gb_tfile = f_gb_old.ReadLine
				If (gb_id<>gb_nid) then
					f_gb_new.WriteLine("#" & gb_id)
				   f_gb_new.WriteLine(gb_thema)
				   f_gb_new.WriteLine(gb_tfile)
				End if
			Wend
			f_gb_old.Close
			Set f_gb_old = Nothing
			f_gb_new.Close
			Set f_gb_new = Nothing
          fs.MoveFile "c:\news.txt", "c:\news_old.txt"
			fs.DeleteFile "c:\news.txt", True
			fs.MoveFile "c:\news_tmp.txt", "c:\news.txt"	

%>
<span style="font-size:8.0pt;font-family:Verdana;">
Файл с именем:
<%=(Request.QueryString("number"))%>
удален
</span>
<br>
<%
End if
else
if (action="del") and (Request.QueryString("number")="") then %>
<span style="font-size:8.0pt;font-family:Verdana;">
<b>Введите имя файла</b>
</span>
<%
End if
End if
%>

<%
If s="0" then %> 
<span style="font-size:8.0pt;font-family:Verdana;">
<b>Файла с таким именем не существует:</b>
<%=(Request.QueryString("number"))%></span>

<%

End if
%>
<%



	If (action="add") then
		gb_id = Request.QueryString("id")
		gb_tema = Trim(Request.QueryString("tema"))
		gb_datetime = Now()
		gb_message = Trim(Request.QueryString("message"))
		
		If (gb_message="") or (gb_message="Ввод новости...") then gb_id=last_id
	  
		
		temp = ""
		For i =  1  to len(gb_message)
			If left(gb_message,  1 ) = "#" then
				temp = temp + "№"
			Else
				temp = temp + left(gb_message,  1 )
			End If
			gb_message = right(gb_message, len(gb_message) -  1 )
		Next
		gb_message = temp
		
		If (gb_id<>last_id) then
			Set f_gb = fs.CreateTextFile("c:\\news_tmp.txt", True)
			f_gb.WriteLine("#" & gb_id)
			f_gb.WriteLine(gb_tema)
			f_gb.WriteLine(gb_datetime)
			f_gb.WriteLine(gb_message)
			Set f_gb_old = fs.OpenTextFile("c:\news.txt",  1 ,  0 )
			While not f_gb_old.AtEndOfStream
				line = f_gb_old.ReadLine
				f_gb.WriteLine(line)
			Wend
			f_gb_old.Close
			Set f_gb_old = Nothing
			f_gb.Close
			Set f_gb = Nothing
			fs.DeleteFile "c:\news.txt", True
			fs.MoveFile "c:\news_tmp.txt", "c:\news.txt"
		End if
%>		
		<span style="font-size:8.0pt;font-family:Verdana;">
Данные введены успешно. Спасибо,
<%=(Request.QueryString("Login"))%></span>
<%	End if


If (action="del") then
		gb_id = CInt(Request.QueryString("id"))
		gb_tema = Trim(Request.QueryString("tema"))
		gb_datetime = Now()
		gb_message = Trim(Request.QueryString("message"))
		

		temp = ""
		For i =  1  to len(gb_message)
			If left(gb_message,  1 ) = "#" then
				temp = temp + "№"
			Else
				temp = temp + left(gb_message,  1 )
			End If
			gb_message = right(gb_message, len(gb_message) -  1 )
		Next
		gb_message = temp
		
		If (gb_id<>last_id) then
			Set f_gb = fs.CreateTextFile("c:\news_tmp.txt", True)
			f_gb.WriteLine("#" & gb_id)
			f_gb.WriteLine(gb_tema)
			f_gb.WriteLine(gb_datetime)
			f_gb.WriteLine(gb_message)
			Set f_gb_old = fs.OpenTextFile("c:\news.txt",  1 ,  0 )
			While not f_gb_old.AtEndOfStream
				line = f_gb_old.ReadLine
				f_gb.WriteLine(line)
			Wend
			f_gb_old.Close
			Set f_gb_old = Nothing
			f_gb.Close
			Set f_gb = Nothing
			fs.DeleteFile "c:\news.txt", True
			fs.MoveFile "c:\news_tmp.txt", "c:\news.txt"
		End if
End if

%>
Заранее спсб
...
Рейтинг: 0 / 0
24.09.2004, 09:22
    #32709684
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в коде. Всем, кто разбирается
такая ошибка вознкает когда слишком долго работает скрипт, который у вас выполняется. долго он выполняется оттого, что вы читаете данные из файла и потом данные как-то модифицируете, и видимо что файл большой, время на его чтение продолжительное.
в общем рекомендация - уменьшите размер файла, а лучше вообще от него откажитесь. и поищите в скрипте те операции, которые долго выполняются. соответсвенно операции как то измените
...
Рейтинг: 0 / 0
24.09.2004, 09:39
    #32709712
Solka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в коде. Всем, кто разбирается
Я не могу обойтись без текстовиков - в них у меня все данные... Причем они абсолютно не большие.
Это именно удаление по коду не работает. Ввод новой новости работает прекрасно. И удаление по названию тоже проходит. Вот, единственное, по номеру записи - тормозит.
Прикладываю тот самый файлик. Мож это поможет.
...
Рейтинг: 0 / 0
24.09.2004, 09:52
    #32709736
Hermitap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в коде. Всем, кто разбирается
А хранить данные в базе данных не пробовали?
...
Рейтинг: 0 / 0
24.09.2004, 11:32
    #32709981
Solka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в коде. Всем, кто разбирается
Конечно пробовали, и это намного удобнее, понятнее, быстрее и т.д.
Но . . .
Я делаю сайт, а хостинг, который поддерживает акцесс, дороже (по крайней мере на хайвее). Вот.
Всё остальное замечательно работает, а здесь какая-то ошибка в коде, и я немогу понять какая - вот это и обыдно :-(
плз хелп!
...
Рейтинг: 0 / 0
24.09.2004, 11:51
    #32710051
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в коде. Всем, кто разбирается
офтоп конечно но на хайвей цены не подарок 35 в мес
все свои проекты около 15 шт держу на www.mtw.ru
вот их цены .
то что вам нужно стоит 15$ и ниже.
если надо могу помочь.
...
Рейтинг: 0 / 0
24.09.2004, 12:57
    #32710234
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в коде. Всем, кто разбирается
вообще, вы знаете , зачем у сервера timeout ? это сделано для того чтобы если страница работает больше чем заданный интервал, она выгружалась из памяти сервером принудительно. не помню сколкь по умолчанию стоит. у вас что - вот есть например

If (gb_id<>last_id) then
Set f_gb = fs.CreateTextFile("c:\\news_tmp.txt", True)
f_gb.WriteLine("#" & gb_id)
f_gb.WriteLine(gb_tema)
f_gb.WriteLine(gb_datetime)
f_gb.WriteLine(gb_message)
Set f_gb_old = fs.OpenTextFile("c:\news.txt", 1, 0)
While not f_gb_old.AtEndOfStream
line = f_gb_old.ReadLine
f_gb.WriteLine(line)
Wend
f_gb_old.Close
Set f_gb_old = Nothing
f_gb.Close
Set f_gb = Nothing
fs.DeleteFile "c:\news.txt", True
fs.MoveFile "c:\news_tmp.txt", "c:\news.txt"
End if

ладно бы один раз чтение \ запись из встречалось. но ведь раза три - впоне естественно что будет долго работать. переходите на базы - что вы время тратите на пустую работу
...
Рейтинг: 0 / 0
27.09.2004, 08:53
    #32712091
Solka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в коде. Всем, кто разбирается
Спасибо большое big-duke за помощь - она мне очень пригодится. Ссылочку я просмотрела - реально.
А в этом коде я разобралась - просто надо было подумать получше. Часто бывает, что надо с другой стороны подойти... Спасибо всем! Там действительно зацикливалось.
Кстати, кто-нибудь помнит как перевести курсор на предыдущую строчку в файле?
...
Рейтинг: 0 / 0
27.09.2004, 15:13
    #32713001
Solka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка в коде. Всем, кто разбирается
Всем огромное спасибо за содействие! Я разобралась.
Если кому нужно - вот код удаления записей из текстового файла, вроде правильный, по крайней мере работает замечательно!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Set f_gb_new = fs.CreateTextFile("c:\Ilya_test\news_tmp.txt", True)	
			Set f_gb_old = fs.OpenTextFile("c:\Ilya_test\news.txt",  1 ,  0 )
			While not f_gb_old.AtEndOfStream
				gb_id = f_gb_old.ReadLine
				If (gb_id<>gb_nid) then
				   f_gb_new.WriteLine(gb_id)
				else
				  gb_line = f_gb_old.ReadLine 
				   Do While not left(gb_line,  1 ) = "#"
				    gb_line = f_gb_old.ReadLine 
				    if left(gb_line,  1 ) = "#" then f_gb_new.WriteLine(gb_line)
				    if f_gb_old.AtEndOfStream then 
				     f_gb_new.WriteLine(" ")
				     exit Do
				    end if 
				   Loop
				End if
			Wend
			f_gb_old.Close
			Set f_gb_old = Nothing
			f_gb_new.Close
			Set f_gb_new = Nothing

			fs.DeleteFile "c:\Ilya_test\news.txt", True
			fs.MoveFile "c:\Ilya_test\news_tmp.txt", "c:\Ilya_test\news.txt"	
Всем удачи :-)))
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Ошибка в коде. Всем, кто разбирается / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]