Schtasks /Create
patrice86
Messages postés
1520
Statut
Membre
-
Gremy87 Messages postés 360 Statut Membre -
Gremy87 Messages postés 360 Statut Membre -
Bonjour,
Actuellement en stage au service informatique dans une grande école d'ingénieurs je dois effectuer une fonction php qui se répète toute les 24h.
Pour ça j'ai utiliser schtasks /create
Dans la partie /tr je dois mettre le lien de la fonction à exécuter or j'aimerai que se soit une fonction php qui s'exécute.
Je m'explique, ici ils développent sous la forme MVC et j'aimerai que ma fonction
public function planifier (){
schtasks /Create /tn "Delete à 1" /tr delete.php /sc DAILY /st 20:00
}
qui est dans un contrôleur appelle la fonction public function delete() qui est elle aussi dans le contrôleur.
Est-ce que je peux donc mettre /tr delete() ? Car je n'es pas trouvé d'aide affirmant que c'est possible.
Merci
Actuellement en stage au service informatique dans une grande école d'ingénieurs je dois effectuer une fonction php qui se répète toute les 24h.
Pour ça j'ai utiliser schtasks /create
Dans la partie /tr je dois mettre le lien de la fonction à exécuter or j'aimerai que se soit une fonction php qui s'exécute.
Je m'explique, ici ils développent sous la forme MVC et j'aimerai que ma fonction
public function planifier (){
schtasks /Create /tn "Delete à 1" /tr delete.php /sc DAILY /st 20:00
}
qui est dans un contrôleur appelle la fonction public function delete() qui est elle aussi dans le contrôleur.
Est-ce que je peux donc mettre /tr delete() ? Car je n'es pas trouvé d'aide affirmant que c'est possible.
Merci
A voir également:
- Schtasks /Create
- Create .bat - Guide
- Windows create iso - Guide
- Create usb bootable windows 10 - Guide
- Create compte google - Guide
- Create compte gmail - Guide
11 réponses
Bonjour,
je ne pense pas que cela soit possible...
si tu veux faire cela tu vas devoir passer par un bout de procédural...
je pense que le plus "propre" dans ton cas est de faire un script a part qui fait appel a ta fonction.
donc un delete.php qui appel la fonction delete de ton controleur
je ne pense pas que cela soit possible...
si tu veux faire cela tu vas devoir passer par un bout de procédural...
je pense que le plus "propre" dans ton cas est de faire un script a part qui fait appel a ta fonction.
donc un delete.php qui appel la fonction delete de ton controleur
Tu m'as dis ce que j'ai effectué.
En faite j'ai dans un 1er .php ma fonction
<?
public function planifier (){
schtasks /Create /tn "Delete à 1" /tr delete.php /sc DAILY /st 20:00
}
?>
Puis dans un autre .php ma fonction:
<?
public function delete(){
//Instruction
}
?>
Et j'aurai aimer que cette dernière fonction soit dans le 1er .php en l'appelant par /tr delete()
Mais apparement, c'est pas possible :/
En faite j'ai dans un 1er .php ma fonction
<?
public function planifier (){
schtasks /Create /tn "Delete à 1" /tr delete.php /sc DAILY /st 20:00
}
?>
Puis dans un autre .php ma fonction:
<?
public function delete(){
//Instruction
}
?>
Et j'aurai aimer que cette dernière fonction soit dans le 1er .php en l'appelant par /tr delete()
Mais apparement, c'est pas possible :/
je voyais plutot:
ca tapé a la main en ligne de commande parce que une fois que la tache est créée et qu elle s execute tous les jours tu vas pas faire appel a ta fonction tous les 4 matins.
et le fichier delete.php:
donc ta tache périodique appel tous les jours delete.php qui appel la fonction delete du controleur
schtasks /Create /tn "Delete à 1" /tr delete.php /sc DAILY /st 20:00
ca tapé a la main en ligne de commande parce que une fois que la tache est créée et qu elle s execute tous les jours tu vas pas faire appel a ta fonction tous les 4 matins.
et le fichier delete.php:
<?php
include_once('controleur.php');
delete();
?>
donc ta tache périodique appel tous les jours delete.php qui appel la fonction delete du controleur
Oula doucement Gremy87 stp, je suis encore en 1ere année de BTS IG ^^
Mais je te remercie de m'aider en tout cas !
En fait la 1ere fonction (planifier() )est dans un contrôleur gestionPC.php et j'aimerai qu'elle appel la fonction delete() qui serait alors dans le même contrôleur.
Ils (les informaticiens de l'école) souhaitent ne pas avoir plusieurs fichiers .php avec des fonctions, qu'elles soient toutes dans le même contrôleur gestionPC.php
Donc ne pas taper à chaque fois la ligne de commande dans une invite, ils veulent que ça se lance tout seul à 20h et je n'ai trouvé que cette solution.
Mais je te remercie de m'aider en tout cas !
En fait la 1ere fonction (planifier() )est dans un contrôleur gestionPC.php et j'aimerai qu'elle appel la fonction delete() qui serait alors dans le même contrôleur.
Ils (les informaticiens de l'école) souhaitent ne pas avoir plusieurs fichiers .php avec des fonctions, qu'elles soient toutes dans le même contrôleur gestionPC.php
Donc ne pas taper à chaque fois la ligne de commande dans une invite, ils veulent que ça se lance tout seul à 20h et je n'ai trouvé que cette solution.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lol on va faire ca doucement alors^^
donc ton controlleur gestionPC.php doit etre, en toute logique mais corrige moi si je me trompe, un simple ensemble de fonctions:
c'est le cas? il n'y a pas de code qui s'exécute directement dedans?
dans ces fonctions tu dois donc avoir delete()
ce que tu veux c'est que cette fonction delete soit exécutée tous les jours a 20h, c'est ca?
pour faire cela il faut l'appeler d'une manière ou d une autre. j'ai 2 solutions qui me viennent la.
la 1ère est celle que j'ai postée plus haut:
tu crée un fichier delete.php contenant
et c'est ce fichier delete.php qui va etre appelé par la tâche périodique.
(rappel sur les tâches périodiques)
une fois que ta tâche périodique est crée, elle s'exécute toute seule aux moments qu'on lui a précisé.
crée une tache périodique qui s'appelle "Delete à 1" qui s'éxecute tous les jours a 20:00 et qui exécute le fichier "delete.php" (ce qui d'ailleurs ne marchera pas mais j'y arrive)
une fois cette tâche crée plus besoin d'y toucher.
la 2eme solution est de mettre dans ta tâche périodique directement ton contrôleur gestionPC.php avec une variable GET comme suit:
et dans ton contrôleur gestionPC.php
mais je trouve cela moins propre.
ensuite, (piuw marre d'écrire) n'importe quelle page php doit être lancée sous un serveur web. donc par exemple si tu utilise un serveur comme wamp, tu devras mettre dans ta tache périodique:
et pas juste delete.php?perio=true
voila je crois que j'ai tout dit ^^
donc ton controlleur gestionPC.php doit etre, en toute logique mais corrige moi si je me trompe, un simple ensemble de fonctions:
<?php
function toto()
{
}
function tutu()
{
}
function tata()
{
}
.
.
.
?>
c'est le cas? il n'y a pas de code qui s'exécute directement dedans?
dans ces fonctions tu dois donc avoir delete()
ce que tu veux c'est que cette fonction delete soit exécutée tous les jours a 20h, c'est ca?
pour faire cela il faut l'appeler d'une manière ou d une autre. j'ai 2 solutions qui me viennent la.
la 1ère est celle que j'ai postée plus haut:
tu crée un fichier delete.php contenant
<?php
include_once('gestionPC.php');
delete();
et c'est ce fichier delete.php qui va etre appelé par la tâche périodique.
(rappel sur les tâches périodiques)
une fois que ta tâche périodique est crée, elle s'exécute toute seule aux moments qu'on lui a précisé.
schtasks /Create /tn "Delete à 1" /tr delete.php /sc DAILY /st 20:00
crée une tache périodique qui s'appelle "Delete à 1" qui s'éxecute tous les jours a 20:00 et qui exécute le fichier "delete.php" (ce qui d'ailleurs ne marchera pas mais j'y arrive)
une fois cette tâche crée plus besoin d'y toucher.
la 2eme solution est de mettre dans ta tâche périodique directement ton contrôleur gestionPC.php avec une variable GET comme suit:
schtasks /Create /tn "Delete à 1" /tr delete.php?perio=true /sc DAILY /st 20:00
et dans ton contrôleur gestionPC.php
if(isset($_GET['perio']) && $_GET['perio']=='true' )
{
delete();
}
mais je trouve cela moins propre.
ensuite, (piuw marre d'écrire) n'importe quelle page php doit être lancée sous un serveur web. donc par exemple si tu utilise un serveur comme wamp, tu devras mettre dans ta tache périodique:
schtasks /Create /tn "Delete à 1" /tr C:\wamp\bin\php\php5.3.5\php.exe delete.php?perio=true /sc DAILY /st 20:00
et pas juste delete.php?perio=true
voila je crois que j'ai tout dit ^^
* Oui le contrôleur est comme tu l'a dit.
* Oui la fonction delete() doit être effectuer automatiquement tout les jours à 20h.
delete() => Met à jour le champs delete de la table exceptionModel à 1.
Ce n'est pas un delete au sens 'supprimer' (je sais, c'est tordu ^^)
Si je te comprends bien, la commande schtasks je la rentre dans l'invite de commande du serveur et une fois qu'elle est créer je n'es plus besoin d'y toucher, elle est enregistrer et c'est bon point final ?
=> schtasks /Create /tn "Delete à 1" /tr gestionPC.php /sc DAILY /st 20:00
Et dans gestionPC.php :
<?
// fonction 1
// fonction 2
// ...
public function delete(){
//Instructions..
}
Mais, comment faire pour que le tr sache que dans le fichier gestionPC il faut qu'il utilise la function delete() ?
* Oui la fonction delete() doit être effectuer automatiquement tout les jours à 20h.
delete() => Met à jour le champs delete de la table exceptionModel à 1.
Ce n'est pas un delete au sens 'supprimer' (je sais, c'est tordu ^^)
Si je te comprends bien, la commande schtasks je la rentre dans l'invite de commande du serveur et une fois qu'elle est créer je n'es plus besoin d'y toucher, elle est enregistrer et c'est bon point final ?
=> schtasks /Create /tn "Delete à 1" /tr gestionPC.php /sc DAILY /st 20:00
Et dans gestionPC.php :
<?
// fonction 1
// fonction 2
// ...
public function delete(){
//Instructions..
}
Mais, comment faire pour que le tr sache que dans le fichier gestionPC il faut qu'il utilise la function delete() ?
voila, ca avance t'as presque tout compris ^^
"Si je te comprends bien, la commande schtasks je la rentre dans l'invite de commande du serveur et une fois qu'elle est créer je n'es plus besoin d'y toucher, elle est enregistrer et c'est bon point final ? "
absolument!
=> schtasks /Create /tn "Delete à 1" /tr gestionPC.php /sc DAILY /st 20:00
comme je t'ai dit, avec cette syntaxe ca ne marchera pas, il faut que tu passe par un client PHP (tu en as forcement un, trouve juste l'executable)
schtasks /Create /tn "Delete à 1" /tr C:\wamp\bin\php\php5.3.5\php.exe delete.php?perio=true /sc DAILY /st 20:00
"Mais, comment faire pour que le tr sache que dans le fichier gestionPC il faut qu'il utilise la function delete() ?"
avec la variable GET:
dans gestionPC.php tu met
si la variable est la et qu elle vaut true, c'est que c'est la tâche périodique qui appel la page, donc paf direct a delete()
compris?
"Si je te comprends bien, la commande schtasks je la rentre dans l'invite de commande du serveur et une fois qu'elle est créer je n'es plus besoin d'y toucher, elle est enregistrer et c'est bon point final ? "
absolument!
=> schtasks /Create /tn "Delete à 1" /tr gestionPC.php /sc DAILY /st 20:00
comme je t'ai dit, avec cette syntaxe ca ne marchera pas, il faut que tu passe par un client PHP (tu en as forcement un, trouve juste l'executable)
schtasks /Create /tn "Delete à 1" /tr C:\wamp\bin\php\php5.3.5\php.exe delete.php?perio=true /sc DAILY /st 20:00
"Mais, comment faire pour que le tr sache que dans le fichier gestionPC il faut qu'il utilise la function delete() ?"
avec la variable GET:
dans gestionPC.php tu met
if(isset($_GET['perio']) && $_GET['perio']=='true' )
{
delete();
}
si la variable est la et qu elle vaut true, c'est que c'est la tâche périodique qui appel la page, donc paf direct a delete()
compris?
Je crois avoir compris.
Pour le schtasks c'est réglé, lui j'ai compris.
Après j'ai fait comme suis (toujours dans gestionPC.php) :
public function planifier() {
if(isset($_GET['perio']) && $_GET['perio']=='true' )
{ delete(); }
}
public function delete() {
//Instructions
}
Je penses avoir compris le coup du gestionPC.php?perio=true il va chercher dans gestionPC.php perio et une fois trouver lancer la function delete() ?
Bon ça c'est ok (enfin j'espères), juste pour mieux améliorer le code et pas que les lignes
if(isset($_GET['perio']) && $_GET['perio']=='true' )
{ delete(); }
}
trainent dans le gestionPC.php en vrac au milieu des 510 lignes de code... je les ai mise dans une function planifier() dans le coup je dois modifier le tr du schtasks ? (gestionPC.php?planifier() => ça fonctionne ?)
Pour le schtasks c'est réglé, lui j'ai compris.
Après j'ai fait comme suis (toujours dans gestionPC.php) :
public function planifier() {
if(isset($_GET['perio']) && $_GET['perio']=='true' )
{ delete(); }
}
public function delete() {
//Instructions
}
Je penses avoir compris le coup du gestionPC.php?perio=true il va chercher dans gestionPC.php perio et une fois trouver lancer la function delete() ?
Bon ça c'est ok (enfin j'espères), juste pour mieux améliorer le code et pas que les lignes
if(isset($_GET['perio']) && $_GET['perio']=='true' )
{ delete(); }
}
trainent dans le gestionPC.php en vrac au milieu des 510 lignes de code... je les ai mise dans une function planifier() dans le coup je dois modifier le tr du schtasks ? (gestionPC.php?planifier() => ça fonctionne ?)
et non malheureusement sinon tu retombe sur le même problème de comment appeler directement une fonction.
ces lignes doivent "trainer", tu les mets tout en haut et surtout pas dans une fonctions.
tu n'as pas trop le choix
ces lignes doivent "trainer", tu les mets tout en haut et surtout pas dans une fonctions.
tu n'as pas trop le choix