Page 1 sur 1

[..] Fonction ineget

Posté : dim. 27 sept. 2009 11:29
par JIF
Bonjour, voila j'ai étudier la fonction ineget qui permet de télécharger un fichier à partir d'un serveur HTTP/FTP. Mais voila quand je mais un lien qui ne comporte pas de fichier. La fonction reste a l'infini alors que le fichier n'existe pas. J'aimerai mettre une boucle de sorte que au bout d'un certain temps la fonction s'annule et la suite du scripte continu.
Une boucle for semble le plus approprié mais comment structuré le code ?

Merci de me répondre.
Cordialement JIF,

Re: [..] Fonction inget

Posté : dim. 27 sept. 2009 12:11
par Douves
pourquoi mettre un lien sans fichier? ...
Sinon, 'faut l'extention (.txt, .php, .html ect...)

Re: [..] Fonction inget

Posté : dim. 27 sept. 2009 12:43
par JIF
Non mais ces logique que sa fait sa, car j'ai pour projet de faire une sorte de robot informatique (LEGAL) un peut comme google ou yhaoo pour faire mon propre moteur de recherche. Le robots vas donc télécharger toute les page public du net une par une pou ensuite les analyser. De sorte faire une incrémentation du style
http://a.fr
http://b.fr
http://c.fr
...etc.

Merci de me répondre.
Cordialement JIF,

Re: [..] Fonction inget

Posté : dim. 27 sept. 2009 12:55
par Iste
Un rien ambitieux :lol:
Enfin, j'ai fait les tests, chez moi, en cas d'url non valide, ca renvoi une erreur et passe a la suite :/

Sinon, comme c'est assez... enfin, ca va prendre du temps, il faudra optimiser le script au maximum
D'apres ce poste, on voit que le plus rapide est d'utiliser la fonction suivante pour recup le code source

Code : Tout sélectionner

Func HTTPRequest($oMethod, $oURL, $oData = "")
    If Not IsDeclared("$oHTTP") Then $oHTTP = ObjCreate("winhttp.winhttprequest.5.1") ;on peut meme virer ca, ca ira plus vite, mais faut pas oublier de déclarer la variable au début du script
    $oHTTP.Open($oMethod, $oURL, False)
    If $oMethod = "POST" Then $oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
    $oHTTP.Send($oData)
    Return $oHTTP.ResponseText
EndFunc   ;==>HTTPRequest

Re: [..] Fonction ineget

Posté : dim. 27 sept. 2009 13:53
par JIF
Merci de ta réponse Iste, mais ou je mets l'url dans le code ?

Merci de me répondre.
Cordialement JIF,

Re: [..] Fonction ineget

Posté : dim. 27 sept. 2009 13:56
par timmalos

Code : Tout sélectionner

HTTPRequest("post", $adresse_url)
Je pense que c'est comme ça.

Re: [..] Fonction ineget

Posté : dim. 27 sept. 2009 14:38
par JIF
Merci de ta réponse timmalos, mais sa ne fonctionne pas. Je ne sais pas ou mettre le ineget dans le code que Iste a écrit plus haut.

Merci de me répondre.
Cordialement JIF,

Re: [..] Fonction ineget

Posté : dim. 27 sept. 2009 20:49
par Iste
Bah c'est une fonction, donc tu la met ou tu veux..
Apres tu l'appel, comme toute les autre fonction, et elle renvoi directement le code source de la page ;)

Re: [..] Fonction ineget

Posté : dim. 27 sept. 2009 23:55
par JIF
Merci de ta réponse Iste mais je n'arrive pas a faire fonctionner le code.

Voici ma syntax

Code : Tout sélectionner

Func HTTPRequest($oMethod, $oURL, $oData = "")
    If Not IsDeclared("$oHTTP") Then $oHTTP = ObjCreate("winhttp.winhttprequest.5.1") ;on peut meme virer ca, ca ira plus vite, mais faut pas oublier de déclarer la variable au début du script
    $oHTTP.Open($oMethod, $oURL, False)
    If $oMethod = "POST" Then $oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
    $oHTTP.Send($oData)
    Return $oHTTP.ResponseText
    InetGet("http://google.fr", "C:\Documents and Settings\Utilisateur\Mes documents\scripte\scripte en beta\le projet\page\a.html")
EndFunc   ;==>HTTPRequest
Comment remédié au problème ?

Merci de me répondre.
Cordialement JIF,

Re: [..] Fonction ineget

Posté : mar. 29 sept. 2009 09:39
par JIF
Personne pour m'aidé ?

Re: [..] Fonction ineget

Posté : mar. 29 sept. 2009 12:25
par sylvanie
Bonjour,
D'après ce que je vois, la foction proposée se substitue à inetget :
► Afficher le texte
Là j'ai affiché le retours en msgbox, mais dans votre cas, un filewrite permettra de le stocker en fichier

Re: [..] Fonction ineget

Posté : mar. 29 sept. 2009 23:17
par JIF
Merci de ta réponse sylvanie, j'ai fais exactement ce que tu a écrit dans le code, mais lorsque je changes l'URL dans la variable $url
il me met la même chose dans l'imputboxe et ce quelque soit le site. par contre si je met une Url non valide il ressort une erreur a la ligne 11 ereur : The requested action with this object has failed.

Merci de me répondre.
Cordialement JIF,

Re: [..] Fonction ineget

Posté : mer. 30 sept. 2009 00:13
par Iste
En effet, "The request method POST is inappropriate for the URL", GET passe plus facilement

Re: [..] Fonction ineget

Posté : mer. 30 sept. 2009 11:59
par JIF
Merci de ta réponse Iste, mais je n'ai pas compris le sans de ta réponse.
je ne comprends pas pourquoi passé par httprequest. Pourquoi ne pas passé par une boucle for est au bout d'un certain temps si le scripte ne peux pas telecharger la page, sa passe a la suite du scripte ?

Merci de me répondre.
Cordialemant JIF,

Re: [..] Fonction ineget

Posté : mer. 30 sept. 2009 17:32
par JIF
Personne pour m'aidé ?

Re: [..] Fonction ineget

Posté : mer. 30 sept. 2009 19:40
par Iste
Bon ! [ultra-sympa]

Presentation

La fonction HTTPRequest() que je t'ai présenté plus haut renvoi la source de la page voulue. C'est tout comme inetget(), sauf que ca n'ecris pas dans un fichier et du coup, il est au final plus rapide d'exploiter les données. C'est ce que je démontre dans le poste cité en 1er ou d'apres mes testes la fonction HTTPRequest() et 3fois plus rapide, ce qui risque de t'etre fort utile.

inetget() : écrit la source d'une page dans un fichier
HTTPRequest() : renvoi la source de la page (3x plus rapide)


Utilisation

La fonction HTTPRequest() prend 3 paramètres, dont un optionnel dont tu n'auras pas besoin. on va donc l'oublier, mais je vais quand même l'expliquer.
$oMethod : Le type de method pour récup la page. Sache simplement qu'il y en a deux, POST et GET, mais que GET est celle qui te convient le mieux. Aussi, nous mettrons toujours "GET" pour ce paramètre
$oURL : ca c'est l'url, de type http://truc.machin. c'est tout.
$oData : le paramètre optionnel, il te permet de transmettre des info a la page, mais ca c'est utile que lorsque une page php doit communiquer avec une autre page php. Nous nous venons de 'nul part', on a rien a dire, donc on ne dit rien.


Où la placer

Comme tout les autres fonction, tu la place en bas de ton code. La seule petite particularité qui peut jouer en terme de vitesse d'execution, c'est la 1er ligne :

Code : Tout sélectionner

If Not IsDeclared("$oHTTP") Then $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
Tu peux retirer cette ligne de la fonction, mais tu dois alors, avant tout appel de cette dernière, et une seule foi, déclarer cette variable en global

Code : Tout sélectionner

Global $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")

Comment l'appeler

Tres simple, il suffit de placer "GET" suivi de ton url, puis rien

Code : Tout sélectionner

$Code_Source = HTTPRequest("GET","http://mon.url")
La variable $Code_Source dans mon exemple contiendra le code source de la page en question.


Voila, j'espere que j'ai été assez claire [/ultra-sympa]
car sinon,je laisse tomber...

Re: [..] Fonction inget

Posté : jeu. 01 oct. 2009 06:28
par jchd
JIF a écrit :Le robots vas donc télécharger toute les page public du net une par une pou ensuite les analyser.
wget me semble un brin plus adapté à cete tâche délirante.

C'était pour ça "l'incrémenation alpha-numérique"...

Fais déjà l'indexation correcte d'un site moyen !