Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2690 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Lancer un script périodiquement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lancer un script périodiquement

n°854735
rufo
Pas me confondre avec Lycos!
Posté le 21-09-2004 à 12:12:36  profilanswer
 

Voilà, je voudrais savoir comment je pourrais faire pour lancer périodiquement un script PHP chargé d'envoyer des mails de relance en fonction du contenu d'une BD. Je souhaiterais une solution indépendante de l'OS (exit donc le CRON sous Linux ou le planificateur sous Win). Je me demandais si Apache n'aurait pas une fonction permettant d'exécuter un script php périodiquement? Merci :jap:

mood
Publicité
Posté le 21-09-2004 à 12:12:36  profilanswer
 

n°854780
black_lord
Truth speaks from peacefulness
Posté le 21-09-2004 à 13:08:07  profilanswer
 

http://www.webcron.org


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°854809
rufo
Pas me confondre avec Lycos!
Posté le 21-09-2004 à 13:41:55  profilanswer
 


 
Vu que c'est pour un intranet, pas question de faire appel à un site sur le web, le serveur n'étant pas raccorder au web...
 
Merci quand même :)


Message édité par rufo le 21-09-2004 à 13:42:13
n°854934
cerel
Posté le 21-09-2004 à 15:13:22  profilanswer
 

Apache etant un "serveur" il reponds a des "requetes". Donc sans requete apache ne fait rien.
De plus les script php ont une duree limite d'execution. Donc ce n'est pas possible que tu crees toi un script pour ca.
 
Donc non, il n'existe pas de moyen simple de faire ce que tu veux.
Tu dois passer par le systeme de planification des taches de l'os. Soit l'OS du serveur apache. soit ton OS.
Si tu le fais sur ta machine il faudra que tu la laisse allumee, ensuite tu ajoute la tache qui consiste a executer un petit script qui va aller "se connecter" sur le serveur apache pour lancer le script que tu veux.
 
Webcron fait exactement ca. Il se connecte a l'url que tu lui indique au moment que tu as choisi.

n°854988
rufo
Pas me confondre avec Lycos!
Posté le 21-09-2004 à 16:01:04  profilanswer
 

Cerel a écrit :

Apache etant un "serveur" il reponds a des "requetes". Donc sans requete apache ne fait rien.
De plus les script php ont une duree limite d'execution. Donc ce n'est pas possible que tu crees toi un script pour ca.
 
Donc non, il n'existe pas de moyen simple de faire ce que tu veux.
Tu dois passer par le systeme de planification des taches de l'os. Soit l'OS du serveur apache. soit ton OS.
Si tu le fais sur ta machine il faudra que tu la laisse allumee, ensuite tu ajoute la tache qui consiste a executer un petit script qui va aller "se connecter" sur le serveur apache pour lancer le script que tu veux.
 
Webcron fait exactement ca. Il se connecte a l'url que tu lui indique au moment que tu as choisi.


 
Merci pour tes explications. Donc, je peux pas éviter le crontab :( Y'a un moyen simple d'accéder à une bd mysql par un script? (pas php en l'occurence)

n°855004
moxfulder
PSN : MoxFulder_
Posté le 21-09-2004 à 16:22:26  profilanswer
 

bah tu peux faire un dump en bash je pense


Message édité par moxfulder le 21-09-2004 à 16:22:44
n°855014
rufo
Pas me confondre avec Lycos!
Posté le 21-09-2004 à 16:32:43  profilanswer
 

rappel : je veux pas sauvegarder ma base, je veux envoyer des mails en fonction de certains enregistrements dans une base...

n°855033
GaSPaRD77
Posté le 21-09-2004 à 17:01:07  profilanswer
 

Tu as la commande "at" qui existe sur unix et windows .. sur les autres OS je sais pas, mais ça te permet de lancer une commande à une heure précise

n°855035
cybercouf
Posté le 21-09-2004 à 17:05:01  profilanswer
 

bha ton apache est sur quoi comme OS? un linux? , tu utilises un deamon At, une tache planifiée qui vas lancer le script php voulu, pas besoin de passer par un service externe.


---------------
Habillé par Canon, Gallerie web v1.0
n°855075
rufo
Pas me confondre avec Lycos!
Posté le 21-09-2004 à 17:35:33  profilanswer
 

CyberCouf a écrit :

bha ton apache est sur quoi comme OS? un linux? , tu utilises un deamon At, une tache planifiée qui vas lancer le script php voulu, pas besoin de passer par un service externe.


 
sur un Linux mon apache.

mood
Publicité
Posté le 21-09-2004 à 17:35:33  profilanswer
 

n°855259
Gaby59
Posté le 21-09-2004 à 21:19:03  profilanswer
 

si tu veux executer le script en locale tu n'es pas obligé de passer par apche mais de lancer ton script en mode client et de retourner le resultat dans un fichier de log.
Sinon pour l'executer tu seras obligatoirement obligé de passer par un planificateur, at par exmple.
 
Yannick

n°855497
rufo
Pas me confondre avec Lycos!
Posté le 22-09-2004 à 10:59:53  profilanswer
 

donc, en utilisant "at", je peux exécuter un script php (perdez pas de vu que ce que je veux au final, c'est envoyer des mails, via php, par rapport au contenu d'un BD MySQL)?

n°855553
neogally
Battle Angel Alita
Posté le 22-09-2004 à 11:56:28  profilanswer
 

rufo a écrit :

donc, en utilisant "at", je peux exécuter un script php (perdez pas de vu que ce que je veux au final, c'est envoyer des mails, via php, par rapport au contenu d'un BD MySQL)?


 
oui
 
tu utilise At pour executer un script php
 
dans ce script tu fe une requtte de selection sur ta bdd mysql et tu envoie le tout par mail avec la fonction mail() par exemple :)

n°855714
rufo
Pas me confondre avec Lycos!
Posté le 22-09-2004 à 15:46:54  profilanswer
 

lancer un script php via "at", ça ne risque pas de poser de pb? Le pc va comprendre qu'il doit être interprété par apache? ou alors je fais un exec de php.exe auquel je pesse mon fichier php à exécuter en argument...???

n°855841
Gaby59
Posté le 22-09-2004 à 18:26:08  profilanswer
 

<Taquine>euh si tu es sur linux tu feras pas un php.exe.C'est koi un exec ?</Taquine>
Sinon le principe c'est ca. PHP va interprete le script passe en parametre et cela sans rien n'interfacer avec apache.
 
Yannick

n°856079
jolly
Posté le 22-09-2004 à 23:46:19  profilanswer
 

gaby59 a écrit :


Sinon le principe c'est ca. PHP va interprete le script passe en parametre et cela sans rien n'interfacer avec apache.
 
Yannick


 
je confirme !

n°963940
rufo
Pas me confondre avec Lycos!
Posté le 27-01-2005 à 18:29:58  profilanswer
 

Bon, 2 méthodes :
1) php -q script.php qu'on met dans le cron du serveur
2) wget url_du_script.php qu'on met dans le cron d'un serveur sur lequel on a les droit afin d'exécuter un script php qui se trouve sur un autre serveur sur lequel on a pas les droits pour le cron.

n°964221
cerel
Posté le 28-01-2005 à 01:22:56  profilanswer
 

Si jamais sur linux, quand tu ecris des scripts, la premiere de ce dernier indique avec quoi il doit etre interprete ...
Donc par exemple un script bash resesmble a ca :

Code :
  1. #/bin/bash
  2. ...


Ben pour ton php, faut que tu metes les path vers php, par exemple :

Code :
  1. #/bin/php4
  2. ...


Attention quand meme, faut que ton php soit bien installe pour ca, en effet il me semble que certaines version de ce dernier n'integrent pas directement l'interpreteur. Donc faut lire un peu la doc de php.

n°964222
the real m​oins moins
Posté le 28-01-2005 à 01:26:24  profilanswer
 

cerel > bah /bin/php monscript.php marche aussi bien :)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°964576
rufo
Pas me confondre avec Lycos!
Posté le 28-01-2005 à 12:21:28  profilanswer
 

via le cron, j'ai réussi à lancer mon script php en faisant un php -q script.php >/dev/pts/0
la redirection, c'était pour voir le résultat sur la sortie std ;)

n°964578
rufo
Pas me confondre avec Lycos!
Posté le 28-01-2005 à 12:23:03  profilanswer
 

ah, par contre, pas possible d'accéder aux super variables globales en utilisant cette méthode :( Pourquoi? Genre $_SERVER["DOCUMENT_ROOT"] renvoie une chaîne vide. Pourtant, mon script php est dans le répertoire /www/ (du reste, je ne sais pas si ça a une importance)...

n°964582
the real m​oins moins
Posté le 28-01-2005 à 12:25:21  profilanswer
 

ben parce que t'es pas dans l'env de ton serveur apache tiens [:mlc]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°964874
moxfulder
PSN : MoxFulder_
Posté le 28-01-2005 à 17:38:10  profilanswer
 

rufo a écrit :


2) wget url_du_script.php qu'on met dans le cron d'un serveur sur lequel on a les droit afin d'exécuter un script php qui se trouve sur un autre serveur sur lequel on a pas les droits pour le cron.


 
t'es sur que sa marcherait ça ? a mon avis le serveur retournera du simple html.

n°965295
rufo
Pas me confondre avec Lycos!
Posté le 29-01-2005 à 09:54:12  profilanswer
 

moxfulder a écrit :

t'es sur que sa marcherait ça ? a mon avis le serveur retournera du simple html.


 
j'ai pas testé. Mais un site web disait que ça marchait...

n°965296
rufo
Pas me confondre avec Lycos!
Posté le 29-01-2005 à 09:56:14  profilanswer
 

the real moins moins a écrit :

ben parce que t'es pas dans l'env de ton serveur apache tiens [:mlc]


 
et y'aurait un moyen d'exécuter mon script php dans l'env d'apache? Apache répond à des requêtes http ; l'idée serait donc de formater une requête htp et de l'envoyer à apache où je lui demande d'exécuter mon script php...

n°965363
the real m​oins moins
Posté le 29-01-2005 à 13:41:50  profilanswer
 

... ben tu fais du wget comme dit plus haut.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°965364
cerel
Posté le 29-01-2005 à 13:42:27  profilanswer
 

Utilise wget ... :D
Pour information wget fonctionnerait tres bien, ce qu'il fait c'est justement envoyer une "requete" au serveur, donc apres apache recoit la requette lance le script php et retourne le "resultat" (qui d'habitude est une page html).
 
Donc wget fonctionne pour pouvoir lancer un script "a distance" sur une machine ou on a pas access au cron. Et c'est logique d'ailleurs.

n°965938
rufo
Pas me confondre avec Lycos!
Posté le 30-01-2005 à 13:54:48  profilanswer
 

je vais tester ça demain...

n°965979
moxfulder
PSN : MoxFulder_
Posté le 30-01-2005 à 14:55:21  profilanswer
 

Cerel a écrit :

Utilise wget ... :D
Pour information wget fonctionnerait tres bien, ce qu'il fait c'est justement envoyer une "requete" au serveur, donc apres apache recoit la requette lance le script php et retourne le "resultat" (qui d'habitude est une page html).
 
Donc wget fonctionne pour pouvoir lancer un script "a distance" sur une machine ou on a pas access au cron. Et c'est logique d'ailleurs.


 
tien oui, bien évidemment ! J'avais pas vu cela sous cet angle ! Bien vu...
 
mais si le script est derrière un login .htaccess par exemple (si c'est un script qui fait certaines choses sur la machine), c'est possible de lui passer le user/password via wget ?


Message édité par moxfulder le 30-01-2005 à 14:56:16
n°966041
cerel
Posté le 30-01-2005 à 15:48:17  profilanswer
 

moxfulder a écrit :

tien oui, bien évidemment ! J'avais pas vu cela sous cet angle ! Bien vu...
 
mais si le script est derrière un login .htaccess par exemple (si c'est un script qui fait certaines choses sur la machine), c'est possible de lui passer le user/password via wget ?


 
Je pense pas, a moins de "hacker" wget. Par contre ce que tu peux faire c'est changer ton .htaccess. Si j'ai bien compris tu voudrais utiliser wget pour "appeler" le script qui se trouve sur la meme machine, alors suffit de modifier ton .htaccess pour que le login ne soit pas necessaire si le visiteur proviens de "localhost" ou "127.0.0.1". Regarde la doc d'apache, ca doit etre indique. (Je te conseille de regarder les sections sur le "order deny,allow", puis "allow from localhost" et "require valid-user".

n°966054
moxfulder
PSN : MoxFulder_
Posté le 30-01-2005 à 16:01:59  profilanswer
 

ah ben non, le but c'est bien d'appeler le script depuis une autre machine !

n°966090
cerel
Posté le 30-01-2005 à 16:57:38  profilanswer
 

Etant donne que tu parlais de deux "problemes" j'etais pas sur...
Voila les problemes que j'avais compris :
1) Comment lancer un script php sur une machine distance sans cron. Rep : wget sur une machine avec cron
2) Comment faire pour que le php lance via un cron (sans wget) ai acces aux varibales super globales de php. Rep utilsier wget qui va "passer" par apache.
 
Pour te repondre, si la machine depuis ou tu appelle le script prossede une ip fixe, alors tu peux l'utiliser dans le .htaccess de l'autre machine. Sinon va falloir lire la doc de wget pour savoir si tu peux lui passer des params d'auth.

n°966171
moxfulder
PSN : MoxFulder_
Posté le 30-01-2005 à 18:20:20  profilanswer
 

mais si tu lances via cron sur la meme machine, il suffit de lancer php en cmdline non ? $

n°966242
the real m​oins moins
Posté le 30-01-2005 à 19:21:35  profilanswer
 

Cerel a écrit :

Je pense pas, a moins de "hacker" wget.


purée mais halte au n'importe quoi, évidemment qu'on peut passer un user/pass à wget...
 
wget --help [:kiki]

n°966299
moxfulder
PSN : MoxFulder_
Posté le 30-01-2005 à 20:27:14  profilanswer
 

un user http... mais si on doit s'identifier via une autre page avec un formulaire post ?

n°966312
the real m​oins moins
Posté le 30-01-2005 à 20:43:44  profilanswer
 
n°966490
cerel
Posté le 31-01-2005 à 08:55:20  profilanswer
 

moxfulder a écrit :

mais si tu lances via cron sur la meme machine, il suffit de lancer php en cmdline non ? $


 
Oui bien sur, mais rufo se posait la question du pourquoi il ne pouvait pas acceder aux variables super globales. En utilisant wget on "passe" par apache, donc on peux y  acceder.
 

the real moins moins a écrit :

purée mais halte au n'importe quoi, évidemment qu'on peut passer un user/pass à wget...
 
wget --help [:kiki]


 :cry:  
Oui mais c'est moins fun  :kaola:  
 
Bon, bon, promis j'arrete de "hacker" les progs sans defense et j'utilise les fonctions deja presentes.  :sol:

n°966513
rufo
Pas me confondre avec Lycos!
Posté le 31-01-2005 à 09:53:08  profilanswer
 

moxfulder a écrit :

ah ben non, le but c'est bien d'appeler le script depuis une autre machine !


 
non, non, c'est depuis la même machine.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Lancer un script périodiquement

 

Sujets relatifs
[perl] script cgi pour envoie de mail[Perl] comment faire un script en background ?
scriptScript perl cgi [Resolu]
Lancer un executable en local à partir d'une page htmAction script] coordonnées de ma scène ...??
Script batch pour lancer norton ghost a distance[Perl] Passage de variable d'un script a un autre
[Recherche] Script php d'upload-effacer fichiers 
Plus de sujets relatifs à : Lancer un script périodiquement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR