Bonjour à la communauté !
Dans le cadre de la réalisation de mon application web, j'ai été amené à utiliser PHP 5 et Oracle 10g express.
Je dois effectuer une routine d'import toutes les nuits, aussi ai-je créé un script php qui sera lancé par un .bat par windows (ou cron) à heure fixe tous les soirs.
Lorsque je test ce script par l'intermediaire d'un navigateur (lorsque je le lance donc manuellement) tout fonctionne à merveille.
Cependant lorsque je délegue ce travail à une tâche planifiée windows, j'ai quelques soucis.
Ce script insere dans la base de donnée oracle des enregistrements (quelques milliers ). Comme je l'ai dit plutôt lorsque je charge via le navigateur, c'est certe un peu long mais tout fonctionne, lorsque c'est une tâche planifié qui s'en occupe, Le script retourne une erreur.
J'en ai donc conclus que les extensions php ne se lance pas toutes seules lorsqu'on utilise php.exe en ligne de commande.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Fatal error: Call to undefined function oci_connect() in C:\Program Files\EasyPHP 2.0b1\www\simucron\Sql.class.php on line 34
Voici le script bat que j'utilise.
J'ai fait quelques recherche sur l'utilisation des .bat : l'arobase est censé maintenir la fenetre ouverte (soit dit en passant ça ne fonctionne pas elle se ferme quand même ...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part @"C:\Program Files\EasyPHP 2.0b1\php5\php.exe" "C:\Program Files\EasyPHP 2.0b1\www\simucron\script.php" > log.txt
A noter aussi que lorsque je rajoute le paramètre -q à php.exe (ceci est censé annuler l'envoi des headers, chose inutile en ligne de commande), le script ne fonctionne plus qu'il soit lancé manuellement ou pas.
Je souhaiterais un coup de main, si l'un de vous a déjà été confronté à ce soucis. L'important n'est pas de gardé la fenetre ouverte ou de pouvoir executer sans les headers, c'est surtout les insertions SQL qui ne peuvent pas ce faire du fait du non lancement du module oci.
Mes questions sont donc les suivantes :
- Quelle est la source de l'erreur oci, l'extension ne se charge pas ? ou est-ce qu'elle n'a pas le temps de se charger.
- Normalement lorsqu'on lance php.exe il prend compte du php.ini et charge toutes les extensions qui y sont décommenté non ?
Merci pour votre aide
Cordialement.
PS : le fichier Sql.class.php est une classe que j'ai réaliser qui me permet de dialoguer avec la base de donnée, cette classe fonctionne parfaitement dans l'application elle n'est donc pas AMHA la source de ce problème, d'autant plus que je le rappel le lancement manuelle du script ne donne pas d'erreur, tous les enregistrements sont insérés.
Partager