[Résolu] Tuer processus Word automatiquement

jinpol

Habitué
Bonjour,

je voudrais savoir s'il y a un moyen de tuer des processus word automatiquement.
En effet, j'ai une application qui crée des documents Word via PHP et un serveur Apache sous Windows, mais le problème c'est que parfois, si un document Word plante à la création, j'ai mon application Word qui ne se ferme pas correctement, et donc, mon processus reste ouvert jusqu'à ce que j'aille le tuer à la main via Process Explorer par exemple. Et ceci peut-être bloquant pour la création de documents Word ultérieurs.

Je voudrais donc planifier de manière régulière une routine qui me tuerai tous les processus de type Word ouverts au moment où elle est lancée.

Mais je n'ai aucune idée de comment faire ça.

Est-ce qu'une âme charitable aurait la bonté d'éclairer lanterne svp ???

Merci d'avance.

Tchuss, @+, jinpol
 

BennyHeal

Shérif
Code:
tskill WINWORD.exe
ou
Code:
taskkill /IM WINWORD.exe /F
?

Peut on lancer une commande DOS via php ?
 

jinpol

Habitué
Salut et merci pour la réponse.

Par contre si j'ai plusieurs porcessus Word d'ouverts, ça va tous me les tuer ou il faut que je fasse une boucle qui va vérifier s'il y en a encore dans quel cas, je devrais relancer tskill ou taskkill autant de fois qu'il le faut ???

Sinon, pour info, apparemment, avec la fonction exec(), on peut lance une commande DOS via PHP, mais moi, je pense que je vais faire un .bat que je vais lancer en tâche planifiée.

Tchuss, @+, jinpol...
 

jinpol

Habitué
Je pense qu'il n y'a pas vraiment moyen, donc je pense lancer cette manip style à minuit toutes les nuits afin de repartir chaque jour sur quelque chose de propre.

Par contre petite question subsidiaire. Je viens de tester les deux méthodes que tu m'as donné, et le processus est bien tué, mais par contre, le fichier Word temporaire qui est crée à l'ouverture de l'application Word ne disparait pas lui. Y a t il un moyen de le fermer lui aussi ???

Et encore merci pour tes réponses.

jinpol...
 

BennyHeal

Shérif
Je ne suis en effet pas certain que le fichier temporaire soit effacé. Par contre quel est le nom de ce fichier ? C'est un nom de fichier aléatoire ? (Sinon, faire un RM (oops linux...) je ne connais pas la commande DOS sur le dossier serait pas jouable ?)

Je penche davantage sur la suppression, car la fermeture se ferait avec une fermeture clean de WORD, mais puisque tu nécessites une fermeture "à l'arrache" l'extinction de WORD n'est pas propre.
 

jinpol

Habitué
Oui oui, je confirme que cela ne ferme pas le fichier temporaire.
Et le nom de mon fichier est bien aléatoire, du coup, pas moyen de fermer cela proprement avec ma méthode de tâche planifiée.

Il va falloir que je me penche plutôt vers une solution PHP, en récupérant les exceptions afin de fermer mon application Word proprement si mon programme plante.

Mais merci quand même de ton aide, j'aurai au moins appris qqchose aujourd'hui :)

Tchuss, @+, jinpol...
 

BennyHeal

Shérif
You're welcome

Par contre, je ne suis pas contre un retour lorsque tu auras trouvé une solution :)
 

jinpol

Habitué
Ok, no pb, mais je pense que ce sera un truc du style

try
{
//Création de mon Word
//Si problème
throw new Exception("Problème de création de mon Word");
}
catch(Exception $e)
{
exec('tskill WINWORD');
}

Au passage, apparemment, quand on utilise taskkill, il faut mettre le '.exe' après 'WINWORD' alors que quand on utilise tskill, pas besoin du '.exe'

Aller tchuss, @+, jinpol...
 

jinpol

Habitué
Ben en même temps je dis une connerie là, si j'utilise tskill, j'aurai le même problème vu que ça ne fermera pas mon programme comme il faut, du coup j'utiliserai plutôt la fonction close() que j'appliquerai a mon document Word ce qui fermera proprement mon document.

Si je ne me trompe pas, c'est une fonction de la classe PEAR qui permet de manipuler des objets COM (WORD, EXCEL, etc...) en PHP.

Voilà, c'est mieux comme ça :)

Aller, ce coup-ci, vraiment tchuss, @+, jinpol...
 

jinpol

Habitué
Hello,

juste pour info.
Ca date un peu, mais je vais quand même faire un retour sur ce que j'ai fait.
C'est tout simple, j'ai un petit script php dans lequel je fais ça :

Code:
/*
* Kill all WINWORD and Dr Watson process blocked
*/
function killProcess()
{
	exec('taskkill /IM WINWORD.EXE /F');
	exec('taskkill /IM DW20.EXE /F');
	
	return true;
}
[\CODE]

Et pour le problème des fichiers temporaires, en fait je vide complétement mon répertoire, et je recopie les fichiers templates que je garde au chaud dans un autre répertoire de sauvegarde.
Comme ça toutes les nuits, je repars avec un truc tout propre :)

Tchuss, @+, jinpol...
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 126
Messages
6 717 810
Membres
1 586 365
Dernier membre
matiOs1
Partager cette page
Haut