Forum Clubic

[php] executer un code 1 fois par jour+ pb portabilité code

voila j ai besoin d idee pour executer un script php une fois par jour

le tout sans avoir reelement besoin d aide exterieure

pour l instant j ai tout mis sur une page index.php qui lance par un utilisateur fait tout executer…
Le soucis, c que a chaque fois uq un utilisateur vient sur cette page, a chaque fois le code est execute…ce qui est inutile

de plus le samedi et le dimanche qd personne vient sur la page index.php, le problème se pose

la page index.php contient des codes pour le renouvellement de contrats pour les clients, envoi de mails en fin de garantie etc etc, il s agit de choses importantes.

Pour l instant je me debrouille en configurant internet explorer avec la page index.php en page de demarrage et une tache planifiée qui lance la nuit la page index.php…mais ca regle pas du tout le problème de la portabilité de mon code ni les jours de la semaine qd qq1 lance la page index.php que le code s execute aussi plusieurs fois par jours.

es ce que qq1 a une idee?

si tu veux vraiment un truc précis, faut que tu passes par un programme externe, genre cron sous linux ou le planificateur de tâche sous windows (voir visualcron si tu as du .net) …

après il suffit d’adapter ton script PHP pour qu’il ne s’execute pas en mode web (donc le lancer en ligne de commande > php -f nom_script.php) et tu rajoutes une fonction pour enregistrer les résultats du scripts dans un fichier, et c’est gagner :oui:

c’est comme ça que je fais pour executer un script PHP qui doit répliquer des informations entre serveurs, à heure fixe de 8h à 20h, tous les jours de la semaine, et ça fonctionne niquel :super:

il est clair que ca reglera definitivement le pb du code qui s excutera bien une fois par jour a l heure que je voudrais…

par contre cote portabilite de mon code…le pb reste

la par ex avec ma boite je vais lance un systeme de newsletter, il faut clairement pas que ca cela se passe pendant la journee…sinon la page index.php va mettre 30 s a se lancer!! avec ta solution il est certain que ca va aller bien mieux!

pkoi ? :heink:

tu fais un script PHP qui envois un email … que tu le lances sous windows en ligne de commande via le planificateur de tache ou sous linux en ligne de commande via cron … je vois pas trop où se trouvent le problème de portabilité au niveau de l’execution ?
après bah c’est de la portabilité au niveau de ton code, et ça c’est valable pour tous les scripts :jap:

oui je parle pas de portabilite d execution, ca il n y a pas de pb

oui c est la portabilite au niveau code…c toujours le meme problème si on execute des programmes externe…mais c ca qui me fait le plus peur

apreès ptitchat (connu sur le forum) m a fait découvrir et comprendre les commandes AT sous windows pour “installer” des taches planifiées en ligne de commande…ca peut etre la solution pour generer une reinstallation complete…

ton script PHP appelle des programmes externes pour des traitements en exec ou autre ?
bah voué dans ce cas là faut tout paramêtrer dans des variables globales que tu changes en fonction de l’environnement …

le plus simple c peut etre une tache planifier (windows ou linux) qui lance un navigateur qui fait appel a une page traitement.php par ex…

tous les traitement sont fait en php par une page specialisée (pas de pb de portabilité)

juste le declenchement se fait par ton pc de la maison (la tache palnifier qui appel le navigateur etc)

razoir d’occam…

utiliser le navigateur ou php.exe pour executer son script reviens au même … sauf qu’avec php.exe, pas besoin d’installer un serveur web :wink:

je comprends pas ce qui te bloque Florent [:______]

kisscool >> ça sert a rien d’installer php.exe les traitement doive se faire sur son serveur (j’imagine qu’il est chez free ou qlqch dans le genre en gros il a pas la maitrise du serveur sinon un cron c tout) …

et ya pas besoin d’installer un serveur web (ou t aller pecho ça…)

fo juste creer une tache (quoique y en a deja trop sur terre … moi dedans) qui fait une requette HTTP sur l’URL de traitement a distance … ou alors il la lanc tous les jour a la main lol

enfin bref

non je suis parfaitement au local avec easyphp 1.8!

dc j ai la maitrise totale du serveur

dc en gros comment je peux par ex creer un fichier.php qui contient mes scripts et l executer via une tache planifiee?

en faisant php -f nom_script.php, j ai une erreur qui me dit qu il n arrive pas a charger php_gd2.dll- le module specifie est introuvable

tu dois indiquer le chemin de ton fichier php.ini, s’il ne se trouve pas dans le même dossier que php.exe

php -c /chemin/vers/php.ini -f ton_script.php

ben mon php.ini est dans mon dossier php…qui est egalement celui de php.exe

j ai tente ca : php -f d:/easyphp/intranet/index.php

bien sur je suis situe dans le dossier php

il me met le warning, puis m execute la page index.php normalement

hummm …
perso sur ma config, j’ai mis le dossier PHP dans le path …
comme ça, où que je sois, je tapes php et rulez …

'fin si le reste de ton script s’éxecute normalement, c’est déjà bon signe :oui:

pour la page index.php, je n ai pas besoin des librairies GD2.
es t il possible qu il m execute mon code en le forcant en me demandant aucun avis?