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

  FORUM HardWare.fr
  Programmation
  PHP

  [presque RESOLU] PHP en ligne de commande, traitement hebdo

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[presque RESOLU] PHP en ligne de commande, traitement hebdo

n°781428
knemo
Posté le 29-06-2004 à 13:53:49  profilanswer
 

Bonjour !!!
 
Je rame depuis plusieurs jours sur un problème qui peut paraître simple
pour certains .... mais qui pour moi me parait ... une montagne...
 
Donc voici le contexte :
Serveur Win2000 avec EasyPHP avec PHP en version 4.2.0
 
en fait je souhaiterais faire un traitement hebdomadaire en PHP  
(avec Accès à une BD Oracle et Envoi de mail)
 
Etape 1 (effectuée) : création du fichier qui interroge la base et envoie le mail  
 
puis la reflexion pour savoir comment lancer le script chaque semaine
 
IDEE 1 : plannifier une ouverture du navigateur directement sur la page php
 Problème : personne n'est là pour fermer les fenêtres  
  et lorsque je fais un <body onload="setTimeout('window.close()',50000);">
  du fait qu'il ne s'agit pas de fenêtre ouverte par javascript :
  il y a une message de confirmation bloquant
 
IDEE 2 : utiliser php en ligne de commande (là gros problème)
 [que j'utiliserai dans un fichier .bat]
 Problème : dans le fichier php.ini j'ai activé iconv.dll (j'ai lu ça quelquepart)
 j'ouvre une invite de commande cmd.exe et pour tester :
 
 je me place dans le répertoire php du serveur puis :
 
 php.exe monscript.php  (anvoi mail mais sans accès BD)
 
 et ça marche ...
 
 par contre quand je le fais avec la version accès à la BD
 via l'inte de commande cmd.exe :
 
 Connexion impossible car tnsname.ora non accessible etc...
 
 or ce script via le navigateur fonctionne (puisque le tnsname.ora est bien configuré)
 
Donc je ne sais pas pour le moment mais je continue à chercher
 
Les docs que j'ai trouvé se rapportent surtout à Unix.
 
Dans ma version je n'ai pas de répertoire CLI ....
 
Faut il ajouter autre chose pour la BD?
Est ce que je m'y prends bien pour la ligne de commande ?
 
Donc voilà .... beaucoup de questions....
 
Merci d'avance !


Message édité par knemo le 29-06-2004 à 19:57:42
mood
Publicité
Posté le 29-06-2004 à 13:53:49  profilanswer
 

n°781454
T509
$job-&gt;GetJob(now)
Posté le 29-06-2004 à 14:09:30  profilanswer
 

Ton serveur est public ? Je veux dire par là qu'il est possible d'y accéder par le net ?
 
Si oui www.webcron.org
 
Sinon, pour ton accès à la base, n'as tu pas moyen d'accéder à la base en ligne de commande (script SQL) et ensuite seulement de lancer le PHP d'envoi de mail.
 
Si tu comptes faire de la production avec easyphp, je te conseille plutot xampp qui est plus sécurisé


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°781470
knemo
Posté le 29-06-2004 à 14:19:21  profilanswer
 

Alors en fait, c'est pour un intranet, donc d'après ce que j'ai lu sur le site : ben non....
Et puis c'est surtout qu'une soulution en interne (car ça risque
souvent de changer d'avoir de ajouts etc ...)
 
Donc voilà .....
 
Par contre pour l'accès à la BD en externe je ne vois pas comment :
 
parce qu'en fait j'ai une liste d'utilisateur...
 
pour chaque utilisateur je fais une requête et je stocke dans un fichier puis
j'envoie le mail ....
 
et pour éviter d'avoir trop de fichiers, je crée puis j'écrase le fichier
généré au fur et à mesure que je parcours la liste des utilisateurs ...
 
donc .... voilà...

n°781485
T509
$job-&gt;GetJob(now)
Posté le 29-06-2004 à 14:30:50  profilanswer
 

regarde cette adresse, je crois que tu as une solution pourt fermer tes fenêtres sans être là :
 
http://www.beyondlogic.org/solutio [...] ssutil.htm


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°781503
knemo
Posté le 29-06-2004 à 14:42:50  profilanswer
 

MErci pour le lien !
 
mais c'est vrai que quand on y repense, si finalement on se retrouve  
avec des tas de fenêtres qui s'ouvrent et qui se referment, est ce que j'arriverai à tout planifier :
 
entre lancer des applications puis fermer d'autres, sachant que si on lance par le navigateur, il faufrait qu'on soit sûr que le navigateur ne soit pas fermé avant d'avoir fini le traimenet php
(parceque je sens qu'il va être long)
 
Donc désolé ... si je réfléchi pas avant de poser des questions...
 
Donc pour le moment le problème est bien ciblé sur la ligne de commande ...
 
 
 
 

n°781511
T509
$job-&gt;GetJob(now)
Posté le 29-06-2004 à 14:45:15  profilanswer
 

lancement des aplis à h, fermeture à h+1
1 heure cela devrait être suffisant non ? En plus pense soit à faire un fichier log pour vérifier la bonne exécution par la suite soit à envoyer un mail à l'admin qui lui donne le résultat du traitement


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°781598
knemo
Posté le 29-06-2004 à 16:14:20  profilanswer
 

Finalement après des recherches et des recherches
(malgrès ton astuce sur le Beyond Magic, le problème
de la ligne de commande avec BD ne titillait)
 
j'ai trouvé un topic sur un forum, pour le moment j'ai pas  
bien compris le comment  
(réflexion à tête reposée à faire et regarder ce que fait les fonctions
utilisées)
 
c'est du bidouillage mais ça à l'air de fonctionner proprement :
(l'auteur le dit lui même : "it can be considerd cheating!" )
 
http://www.phpbuilder.com/annotate [...] id=1012940
 
en fait on passe par un fichier intermédiaire qui lit(fopen, puis  
fpassthru) le script avec accès BD
 
qui a accès à la BD)
 
Donc voilà ... je continue un peu à chercher ...
 
MAis là au moins il y a plusieurs voies de secours.
Merci àT509

n°781664
T509
$job-&gt;GetJob(now)
Posté le 29-06-2004 à 17:10:57  profilanswer
 

phpbuilder.com :


Date: 08/15/02 17:05
By: Matt L
Subject: RE: PHP and MySQL (and others) in command lin
 
AHA!
 
I've managed to do it, but in such a way that it can be considered cheating.
However, I haven't managed to get it to work in any other way.
 
Certain functions (like the mysql ones) seem to only work when accessed by the HTTP server (most likely due to the setup... Steve King has the right idea, allowing PHP to access MySQL directly)
 
So, what I did was use the php shell script to access a localhost web page that outputted the information I wanted using fpassthru.
 
Here's an example:
-- shell.php --
#!/usr/local/bin/php
<?php
$location = "http://localhost/tools/TimeSheet/notify.php";
$fp = fopen ($location, "r" );
fpassthru($fp);
?>
 
-- notify.php --
<?php
mysql_connect("localhost","root","" );
...
mysql_query(...)
...
//print out stuff that you want
?>
--  
 
It may be hacky, but it works : )
Good luck.  


 
Pour ceux à qui cela peut servir


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
n°813554
ca papa
Posté le 03-08-2004 à 13:15:16  profilanswer
 

J'ai utilisé wintask pour simuler les actions user.
+ son scheduler


---------------
ca papa
n°815175
rufo
Pas me confondre avec Lycos!
Posté le 04-08-2004 à 18:24:52  profilanswer
 

drapal

mood
Publicité
Posté le 04-08-2004 à 18:24:52  profilanswer
 

n°816724
stefes007
M'enfin !
Posté le 06-08-2004 à 16:27:08  profilanswer
 

vérifier si les variables d'environnement oracle snot bien définies ( tourve-t-il le ORACLE_HOME , ORACLE_SID etc) .

n°816740
arketype
Posté le 06-08-2004 à 16:53:38  profilanswer
 

y en a un qui a pas vu qu en ligne de commande il ne prend pas le php.ini par defaut.....
php -c C:\chemin\php.ini -f index.php
Comme ca il prend ton php.ini avec tout les modules ke tu charges sinon fais un php -i en ligne de commandes tu veras ke t as que certains modules de base qui sont activés.
Par contre fais gaffe l execution script est plus lente ke l execution a travers apache, sur php.net il preconise de mettre le max_execution time a 0 ce ki est normal d un coté vu que tu ne vas pas servir des clients...
 
http://ch2.php.net/manual/fr/features.commandline.php


---------------
Welcome to the Arkside !!!!!!

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

  [presque RESOLU] PHP en ligne de commande, traitement hebdo

 

Sujets relatifs
[RESOLU] while par rapport à la datepb avec mailto + subject en antispamming [résolu]
[ASP] [Résolu] Problème d'actualisation[PHP] Session - marche pas ! [RESOLU] :-)
Probleme bête avec switch case...[résolu][RESOLU] [php/bdd] mise a jour de bdd a une heure determinée
PHP et buffer : Stdin infini ?[PHP] Obtenir une image transparente malgré imagecreatetruecolor ???
Plus de sujets relatifs à : [presque RESOLU] PHP en ligne de commande, traitement hebdo


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