Aller au contenu

Planificateur de tâches et html DSM 6.1


Messages recommandés

Bonsoir,

je souhaite lancer un script html/php pour récupérer des données.  Quand le lance le scrit sous firefox, j'ai les résultats attendus, mais si je l'ajoute dans le planificateur de tâches (je compte avoir ces résultats plusieurs fois par jour, j'obtiens le message d'erreur suivant:

[/volume1/web/recup_statuts_xml.php: line 1: syntax error near unexpected token `<'

]  

ce qui me fait penser à une incompatibilité entre script html et planificateur de tâches?  Car si je ne mets pas de "<" dans mes balises HTML, mon script ne s’exécutera pas.  

mon script commence par :

<html><head><title>Statuts </title></head>

<body>

<?php

...

 

 

Avez vous un conseil?

 

Merci

inz

 

 

Lien vers le commentaire
Partager sur d’autres sites

OK j'ai pu être aidé sur un autre forum. Je renseigne cependant la solution.

Il faut dans Web Station /Paramètres PHP cocher l'extension "curl" et dans le planificateur de tâches lancer [curl "http://mon_ip_synology/mon_fichier.php] .

Je peut clore cette requête.

Lien vers le commentaire
Partager sur d’autres sites

  • Invité a déverrouillé ce sujet
il y a une heure, inz a dit :

Il faut dans Web Station /Paramètres PHP cocher l'extension "curl"

Ma main à couper que cette option n'est pas nécessaire: la commande "curl" ("/bin/curl") existe nativement sous DSM est est utilisable indépendamment de l'activation de l'extension "curl" de php. (à tester malgrè tout). 

Je pense qu'il est également possible d'éxécuter directement le fichier php avec la commande éponyme, autrement dit

/usr/syno/bin/php /volume1/web/recup_statuts_xml.php

Ca élimine le besoin de faire une requête http. (ca aussi c'est à tester, je ne suis pas spécialiste de php)

Modifié par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

Eh bien merci à vous. Ma première conclusion est qu'il vaut mieux poster le week-end c'est plus réactif.

Il m'a simplement fallu cocher "curl" et "appliquer" pour exécuter mon script, peut être qu'une requête http a un coût en temps cpu? 

Concernant les alternatives proposées, je n'ai pas le niveau nécessaire pour juger si c'est plus avantageux? 

Dois-je comprendre que celle de CoolRaoul n'utilise pas CURL, et permet d’interpréter directement le php du script, et que pour daffy, CURL est dèjà cablé, mais alors comment l'utiliser? Ou bien est ce la réponse de CollRaoul qui en lançant

/usr/syno/bin/php

  va utiliser CURL?

Cordialement

inz

 

Lien vers le commentaire
Partager sur d’autres sites

il y a 19 minutes, inz a dit :

Il m'a simplement fallu cocher "curl" et "appliquer" pour exécuter mon script, peut être qu'une requête http a un coût en temps cpu? 

Essaie de refaire *sans* cocher curl, tu verra que ça marche aussi.

il y a 19 minutes, inz a dit :

Dois-je comprendre que celle de CoolRaoul n'utilise pas CURL, et permet d’interpréter directement le php du script, et que pour daffy, CURL est dèjà cablé, mais alors comment l'utiliser? Ou bien est ce la réponse de CollRaoul qui en lançant


/usr/syno/bin/php

  va utiliser CURL?

Pour ma part je n'utilise rien de tout ça: quand j'ai besoin de mettre en place un script à exécuter en tache de fond je préfère choisir un language plus adapté que php.

L'alternative à curl que j'ai proposé via la commande "/usr/syno/bin/php" (que je le rappelle je n'ai pas testé) doit permettre de faire exécuter ton script php *directement* par l'interpréteur php, sans l'overhead inutile (même si c'est peanuts en terme de CPU) qui consiste (via curl, firefox ou autre) de sous-traiter au serveur apache l'appel au moteur php.

Si il reste des points qui t'échappent dans ce qui précède, ce n'est pas bien grave, l'important est que ça fonctionne d'une façon ou de l'autre.

Modifié par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

Un autre problème d'exécution de script avec mon ds716+ (dsm 6.1):


si je lance avec firefox le fichier php suivant:
http://mon-domaine.com/script/fichier?pass=1234
->tout est ok :-)

si je lance dans le planificateur de tache le script suivant suivant:
volume1/web/script/fichier    
-> c'est bon mais y'a pas de mdp :-|

si je lance dans le planificateur de tache le script suivant suivant:
volume1/web/script/fichier?pass=1234    
-> la commande n'est pas reconnu :-(

Merci pour votre aide et bonne soirée

Dom

Lien vers le commentaire
Partager sur d’autres sites

si j'ai bien compris je dois saisir dans le planificateur l'adresse saisie sur firefox ??
http://mon-domaine.com/script/fichier?pass=1234

Sinon, pourriez-vous me préciser la syntaxe. Le fichier php à exécuter se trouve bien dans le répertoire web de mon syno

 

Lien vers le commentaire
Partager sur d’autres sites

Merci à celui qui pourra me donner la ligne de code pour lancer l’exécution sur le planificateur de tache d'une page php tel que:
http://192.168.0.20/script/fichier?pass=1234
ou
http://mon-domaine/script/fichier?pass=1234
Cordialement

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir melanch, vu mon niveau ça risque d'être limite...

Enfin, pour ma part j'ai intégré le mot de passe directement dans le fichier, voir la réponse de "fenrir" du 28 Février

et d'autre part j'ai récupéré " CURL" et je lance dans le planificateur  [curl "http://mon_ip_synology/mon_fichier.php] .   Je rajoute immédiatement qu'il y a probablement mieux (voir réponses de "coolraoul") mais je n'ai pas vérifier car ça marche pour moi tel quel et je n'en suis pas encore à de l'optimisation.

 

Cordialement

Inz

Lien vers le commentaire
Partager sur d’autres sites

Si votre "code" est en php, vous avez plein de manière de le lancer, mais on va se limiter aux 2 les plus courantes, de la plus lente à la plus rapide, de la moins sécurisée à la plus sécurisée mais aussi de la plus portable à la moins portable :

Dans un cas comme dans l'autre, votre script doit être correctement écrit afin de bien se lancer et il doit produire une sortie compatible avec le besoin.

Exemple, un petit script qui récupère l'heure courante auprès d'un serveur ntp :

<?php
$ntpsrvaddr = 'pool.ntp.org';
$ntpsrvport = '123';
$timezone = 'Europe/Paris';


$query = "\010" . str_repeat("\0", 47);

$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

socket_connect($socket, $ntpsrvaddr, $ntpsrvport);
socket_send($socket, $query, strlen($query), 0);
socket_recv($socket, $response, 48, MSG_WAITALL);
socket_close($socket);

$data = unpack('N12', $response);
$ts = sprintf('%u', $data[9]) - 2208988800;
$time = date('c', $ts);

$tz = new DateTimeZone($timezone);
$date = new DateTime($time);
$date->setTimezone($tz);

echo $date->format('c');

Les 3 première lignes sont des variables qu'il suffit de placer en paramètres pour rendre le script "dynamique". C'est là que la méthode employée a son importance.

Si vous faites une requête HTTP (avec curl ou votre navigateur), les arguments seront en GET ou en POST (methode HTTP), si vous passez en mode script, il s'agira d’arguments à la mode unix, donc à extraire avec $argc et $argv.

Le plus propre étant de toujours prévoir les 2 à la fois (appel http et unix)

<?php
if( $argc > 1 ) {
	parse_str(implode('&',array_slice($argv, 1)), $_GET);
} elseif 
print_r($_GET);

S'il s'agit d'exécuter une action, il n'est aucunement nécessaire de produire du contenu, par contre sortir des codes d'erreur peut être important (code http et/ou unix, en fonction du besoin).

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.