OVH Cloud OVH Cloud

Lecture d'un fichier texte sur un serveur web ?

2 réponses
Avatar
Fabien Gouverneur
Bonjour à tous !

J'ai une petite question ?
Voici mon probleme : J'ai un mouchard sur un serveur web au format txt, il
s'agit d'un fichier ou sont enregistrer toutes les erreurs qui se sont
produite au niveau des requettes sql.
Je télécharge à la main : et j'utilise un programme VB6 qui le lit et
m'extrait les messages que je recherche. Mon fichier fait plus de 19000
lignes, et en offline pas de problemes.

Ce que je recherche s'est la possibilité d'utiliser le contrôle winsock pour
injecter dans une variable tout mon fichier et ensuite effectuer toutes une
série de traitement sur celui-ci.

Est-ce que je ne suis pas trop hors limite dans un tels cas de figure ?

Pourquoid essayer d'effectuer un traitement in line alors que cela irrait
plus cite de le télécharger et de l'utiliser offline - ben tout simplement
parcequ'il évolue en permanence !

Des idées pour obtenir un code efficace ?

PS : J'ai déjà utiliser winsock pour récupérer les flux rss au format xml,
mais les tailles sont beaucoup plus légère ! Mon fichier txt fait un peut
moins de 1mo alors que les flux que j'exploite ne font pas plus d'une 50aine
de ko

A +

2 réponses

Avatar
Jean-Marc
"Fabien Gouverneur" a écrit dans le message de
news:43a6b593$0$23966$
Bonjour à tous !

J'ai une petite question ?
Voici mon probleme : J'ai un mouchard sur un serveur web au format


txt, il
s'agit d'un fichier ou sont enregistrer toutes les erreurs qui se sont
produite au niveau des requettes sql.
Je télécharge à la main : et j'utilise un programme VB6 qui le lit et
m'extrait les messages que je recherche. Mon fichier fait plus de


19000
lignes, et en offline pas de problemes.

Ce que je recherche s'est la possibilité d'utiliser le contrôle


winsock pour
injecter dans une variable tout mon fichier et ensuite effectuer


toutes une
série de traitement sur celui-ci.

Est-ce que je ne suis pas trop hors limite dans un tels cas de figure


?

Pourquoid essayer d'effectuer un traitement in line alors que cela


irrait
plus cite de le télécharger et de l'utiliser offline - ben tout


simplement
parcequ'il évolue en permanence !

Des idées pour obtenir un code efficace ?

PS : J'ai déjà utiliser winsock pour récupérer les flux rss au format


xml,
mais les tailles sont beaucoup plus légère ! Mon fichier txt fait un


peut
moins de 1mo alors que les flux que j'exploite ne font pas plus d'une


50aine
de ko



Hello,

rien de compliqué à priori:
Il suffit d'utiliser le protocole HTTP, et d'envoyer
un GET au serveur.

Pour une taille de 1 méga, tu peux faire un essai avec Winsock,
mais ça risque d'être un peu lent, tout dépend des contraintes
que tu as. Si ca rame trop, tu pourras utiliser les API
send et recv.

Si tu as besoin de détails ou d'exemple, n'hésite pas à demander.

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
Jean-Marc
"Fabien Gouverneur" a écrit dans le message de
news:43a6b593$0$23966$
Bonjour à tous !

J'ai une petite question ?
Voici mon probleme : J'ai un mouchard sur un serveur web au format


txt, il
s'agit d'un fichier ou sont enregistrer toutes les erreurs qui se sont
produite au niveau des requettes sql.
Je télécharge à la main : et j'utilise un programme VB6 qui le lit et
m'extrait les messages que je recherche. Mon fichier fait plus de


19000
lignes, et en offline pas de problemes.

Ce que je recherche s'est la possibilité d'utiliser le contrôle


winsock pour
injecter dans une variable tout mon fichier et ensuite effectuer


toutes une
série de traitement sur celui-ci.

Est-ce que je ne suis pas trop hors limite dans un tels cas de figure


?

Pourquoid essayer d'effectuer un traitement in line alors que cela


irrait
plus cite de le télécharger et de l'utiliser offline - ben tout


simplement
parcequ'il évolue en permanence !

Des idées pour obtenir un code efficace ?



Hop, voici un exemple tout fait, testé et qui fonctionne
bien. On peut améliorer très nettement les perfs si besoin
est en utilisant une meilleure technique pour la concaténation
que le simple '&' de VB (dont les perfs sont vraiment très mauvaises).
Bref voici le code, il récupère un fichier de 1 Méga en moins de 3
secondes sur un serveur avec un upload convenable:

Option Explicit
Dim G_DONE As Boolean
Dim G_RECEIVED As String

Private Sub Command1_Click()
Winsock1.Close
Winsock1.RemoteHost = "ADRESSE.DU.SERVEUR"
Winsock1.RemotePort = 80

Winsock1.Connect
DoEvents
While Winsock1.State <> 7
DoEvents
DoEvents
Wend

' indiquer dans le GET l'url de la ressource recherchée.
Winsock1.SendData "GET /test.txt HTTP/1.0" & vbCrLf & vbCrLf

G_RECEIVED = 0
G_DONE = False
While Not G_DONE
DoEvents
Wend
' hop, le contenu du fichier est dans G_RECEIVED
' on peut faire ce qu'on veut ici, clore le socket, etc.
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim s As String
Static ss As String
Static allBytes As Long
Dim p1 As Long
Static expected_length As Long

Winsock1.GetData s
If expected_length = 0 Then
p1 = InStr(s, "Content-Length:")
If p1 Then
expected_length = Val(Mid$(s, p1 + 15, InStr(p1, s,
vbCrLf) - 1)) + Len(Mid$(s, 1, InStr(s, vbCrLf & vbCrLf))) + 3

Label2.Caption = expected_length
End If
End If
ss = ss & s
allBytes = allBytes + bytesTotal
Label1.Caption = allBytes
Label1.Refresh
If allBytes = expected_length Then

G_RECEIVED = ss
G_DONE = True
ss = ""
allBytes = 0
expected_length = 0
End If
End Sub


--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;