Discussion:
evenement planifie [reformulation]
(trop ancien pour répondre)
Gilles RONSIN
2007-04-27 09:03:45 UTC
Permalink
Salut,

Je gère un site de récupération de données d'appareils embarqués avec
WAMP5 V 1.6.4.

Une interface WEB permet de paramétrer les boitiers éparpillés dans
la nature et une page PHP permet de récupérer régulièrement les
données envoyées par les boitiers pour les stocker dans une base
mySQL.

J'aimerais que le site, qui contrôle ce qui entre, puisse envoyer
automatiquement un rapport régulièrement sur l'état de la base par
email.

Pour l'instant je ne vois que 2 solutions :
- Un pc qui poste un message particulier au serveur à l'heure H pour
déclancher la construction de l'email. Mais ça nécessite un pc
externe.
- Un script (par exemple VBSCRIPT) sur le serveur qui va lui même se
connecter à la base pour en extraire les données à poster, mais ça
nécessite d'installer un driver myODBC.

ou si c'est possible que le serveur (apache en l'occurence) lance la
fonction <?php mail() ?> à une heure donnée.

Est-ce possible ? si oui comment ?

Merci
--
Site : http://gilles.ronsin.free.fr
Recherches ciblées http://gilles.ronsin.free.fr/#search
Il est impossible pour un optimiste d'être agréablement surpris.
P'tit Marcel
2007-04-27 12:19:14 UTC
Permalink
Post by Gilles RONSIN
J'aimerais que le site, qui contrôle ce qui entre, puisse envoyer
automatiquement un rapport régulièrement sur l'état de la base par
email.
ou si c'est possible que le serveur (apache en l'occurence) lance la
fonction <?php mail() ?> à une heure donnée.
Le sujet concerne plus le fonctionnement du serveur que php. Cependant
tu trouveras des conseils toujours valables sur la FAQ de ce forum :
http://faqfclphp.free.fr/#rub4.4

Si le serveur tourne sous Linux, tu peux cadencer un traitement à
jours/heures fixes par la commande cron (crontab -e en ligne de
commande, ou dans le webmin pour les hébergements mutualisés). Sous
windows il est également possible de définir des traitements
automatiques (quelque part dans le panneau de configuration j'imagine).

L'autre solution consiste à utiliser un service web comme suggéré dans
la FAQ. Le service se limitera à lancer l'url à la périodicité souhaitée.

Dans tous les cas, php sera concerné seulement pour le codage du script
ainsi appelé périodiquement. Je te conseille fortement d'inclure un
garde-fou pour bloquer les envois en cas d'appels incessants.

Par exemple sous Linux :

$de = filemtime('dernier_envoi');
if($de !== false) {
# pas plus d'un mail toutes les demi-heures
if((time() - $de) < 60*30) {
die('désolé, précédent envoi trop récent: ' .
date('d/m/Y H:i:s', $de));
}
}
touch('dernier_envoi');


eça
--
P'tit Marcel
stats sur les forums modérés http://www.centrale-lyon.org/ng/
Gilles Ronsin
2007-04-27 16:30:28 UTC
Permalink
P'tit Marcel a exposé le 27/04/2007 :

Salut P'tit Marcel,
Post by P'tit Marcel
Le sujet concerne plus le fonctionnement du serveur que php.
j'ai du mal encore à trouver la frontière
Post by P'tit Marcel
Cependant tu
http://faqfclphp.free.fr/#rub4.4
Je vais étudier ça de près. Merci
Post by P'tit Marcel
Si le serveur tourne sous Linux, tu peux cadencer un traitement à
jours/heures fixes par la commande cron (crontab -e en ligne de commande, ou
dans le webmin pour les hébergements mutualisés). Sous windows il est
également possible de définir des traitements automatiques (quelque part dans
le panneau de configuration j'imagine).
Le serveur est sous W2K
Post by P'tit Marcel
L'autre solution consiste à utiliser un service web comme suggéré dans la
FAQ. Le service se limitera à lancer l'url à la périodicité souhaitée.
Dans tous les cas, php sera concerné seulement pour le codage du script ainsi
appelé périodiquement. Je te conseille fortement d'inclure un garde-fou pour
bloquer les envois en cas d'appels incessants.
$de = filemtime('dernier_envoi');
if($de !== false) {
# pas plus d'un mail toutes les demi-heures
if((time() - $de) < 60*30) {
die('désolé, précédent envoi trop récent: ' .
date('d/m/Y H:i:s', $de));
}
}
touch('dernier_envoi');
eça
En attendant les réponses, je me suis lancé dans un script en vbscript
qui réalise ce que j'attend. Il ne me restera qu'à le lancer avec le
planificateur de tâche une fois par mois.

Merci pour tout.
--
Embryon de site : http://gilles.ronsin.free.fr
Nouvelle astuce : Script de création de gestion des messages non lus
http://gilles.ronsin.free.fr/#nonlus
Il est impossible pour un optimiste d'être agréablement surpris.
thierry
2007-04-27 12:19:14 UTC
Permalink
Post by Gilles RONSIN
- Un script (par exemple VBSCRIPT) sur le serveur qui va lui même se
connecter à la base pour en extraire les données à poster, mais ça
nécessite d'installer un driver myODBC.
VBSCRIPT donc serveur windows ?

peut être une tâche planifiée qui dont la lign de commande serait:
c:\php\php.exe $chemin_vers_le_script$\monScript.php

et dans ton script tu utilises la fonction mail()

voilà

thierry
Gilles Ronsin
2007-04-27 16:30:28 UTC
Permalink
Post by thierry
Post by Gilles RONSIN
- Un script (par exemple VBSCRIPT) sur le serveur qui va lui même se
connecter à la base pour en extraire les données à poster, mais ça
nécessite d'installer un driver myODBC.
Salut Thierry
Post by thierry
VBSCRIPT donc serveur windows ?
Vi
Post by thierry
c:\php\php.exe $chemin_vers_le_script$\monScript.php
et dans ton script tu utilises la fonction mail()
Oui. C'est une solution. Mais j'ai comme je dois générer un fichier de
rapport au format Excel, je me suis tourné vers un script complet.

Merci pour ta suggestion
--
Embryon de site : http://gilles.ronsin.free.fr
Nouvelle astuce : Script de création de gestion des messages non lus
http://gilles.ronsin.free.fr/#nonlus
Il est impossible pour un optimiste d'être agréablement surpris.
Thief13
2007-04-28 23:25:42 UTC
Permalink
Post by thierry
VBSCRIPT donc serveur windows ?
WAMP5 V 1.6.4.
W = Windows
A = Apache
M = MySQL
P = PHP

Continuer la lecture sur narkive:
Loading...