Probá ahora. Lo que hace es especificar que continúe ante un error, detectar si lo hubo y en base a eso informar que el archivo no tiene contenido o, en caso de tenerlo, continuar con su tarea normal.
Código PHP:
<%
Dim FSO,oFichero, Archivo
rs.open "hyperterminal", con, 3, 3
set FSO = Server.CreateObject("Scripting.FileSystemObject")
set oFichero = FSO.OpenTextFile(Server.MapPath("REPORTES.txt"))
On error resume next
Archivo = oFichero.ReadAll
If Err.Number <> 0 then
'no se hace nada y se informa de que el archivo está vacío
response.write "El archivo actualmente no tiene contenido.<br>"
Response.Write "Descripción técnica del error: " & err.Description & " (nro. " & Err.Number & ")"
Err.clear
else
'quito la linea vacía:
Archivo = Replace(Archivo, vbcrlf & vbcrlf, vbcrlf)
' quito los encabezados:
Archivo = Replace(Archivo," Date Time Ext CO Dial Number Duration Acc code CD " & vbcrlf, "")
' quito los "-"
Archivo = Replace(Archivo,"--------------------------------------------------------------------------------" & vbcrlf, "")
' convierto el string en una matriz por el salto de linea
Archivo = Split(Archivo, vbcrlf)
' por cada elemento del array, detecto "campos" y los guardo en variables "volátiles"
For i = 0 to UBound(Archivo)
sDate = Trim(Left(Archivo(i), 8))
sTime = Trim(Mid(Archivo(i), 10, 7))
sExt = Trim(Mid(Archivo(i), 20, 3))
sCO = Trim(Mid(Archivo(i), 24, 2))
sDialNumber = Trim(Mid(Archivo(i), 27, 31))
sDuration = Trim(Mid(Archivo(i), 58, 8))
'convierto la fecha d/m/a al formato separado
'-----------------------------------
mes = Left(sDate, 2)
dia = Mid(sDate, 4, 2)
ano = "20" & Right(sDate, 2)
'---------------------------------
'cambio el formato de duracion
sDuration = Replace(sDuration, "'", ":")
'---------------------------------
agrego cada linea a la base de datos
rs.AddNew
rs("dia") = dia
rs("mes") = mes
rs("ano") = ano
rs("hora") = sTime
rs("ext") = sExt
rs("co") = sCO
rs("llamada_saliente") = sDialNumber
rs("duracion") = sDuration
rs.Update
Next
'para agregar solo datos nuevos a la base de datos
Set CrearNuevoEnBlanco = FSO.CreateTextFile(Server.MapPath("REPORTES.txt"), TRUE)
oFichero.Close
Set oFichero = nothing
set FSO = nothing
Set CrearNuevoEnBlanco = Nothing
end if
%>
ahora.. me parece muy poco tiempo 10 segundos... yo lo pobdría en no menos de un minuto.. pero eso depende de las necesidades