inz Posté(e) le 15 mars 2017 Partager Posté(e) le 15 mars 2017 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 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
inz Posté(e) le 16 mars 2017 Auteur Partager Posté(e) le 16 mars 2017 Bonsoir, pas d'idée? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
inz Posté(e) le 18 mars 2017 Auteur Partager Posté(e) le 18 mars 2017 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. 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 18 mars 2017 Partager Posté(e) le 18 mars 2017 (modifié) 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é le 18 mars 2017 par CoolRaoul 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
DaffY Posté(e) le 18 mars 2017 Partager Posté(e) le 18 mars 2017 CoolRaoul tu peux garder ta main.Je confirme (je l'utilise tous les jours) la fonction curl existe et est accessible via bash Dsm6 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
inz Posté(e) le 18 mars 2017 Auteur Partager Posté(e) le 18 mars 2017 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 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 18 mars 2017 Partager Posté(e) le 18 mars 2017 (modifié) 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é le 18 mars 2017 par CoolRaoul 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
melanch Posté(e) le 22 mars 2017 Partager Posté(e) le 22 mars 2017 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 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Einsteinium Posté(e) le 22 mars 2017 Partager Posté(e) le 22 mars 2017 Ne pas confondre emplacement et adresse, tape directement l'adresse et l'argument passera sans soucis, la avec l'emplacement, c'est mort pour le planificateur. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
melanch Posté(e) le 22 mars 2017 Partager Posté(e) le 22 mars 2017 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 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Einsteinium Posté(e) le 22 mars 2017 Partager Posté(e) le 22 mars 2017 Regarde un peu plus haut dans le topic pour la syntaxe ;-) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
melanch Posté(e) le 22 mars 2017 Partager Posté(e) le 22 mars 2017 Désolé, mais je n'ai pas encore compris... j'ai saisi ceci: /usr/syno/bin/php /volume1/web/script/fichier?pass=1234 et c'est toujours pas bon 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
melanch Posté(e) le 23 mars 2017 Partager Posté(e) le 23 mars 2017 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 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
inz Posté(e) le 23 mars 2017 Auteur Partager Posté(e) le 23 mars 2017 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 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
melanch Posté(e) le 23 mars 2017 Partager Posté(e) le 23 mars 2017 Juste une ligne de code pour lancer l’exécution de mon fichier php à intervalle régulier... Einsteinium, j'ai pas compris ce qui était proposé en début de topic Merci 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fenrir Posté(e) le 23 mars 2017 Partager Posté(e) le 23 mars 2017 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 : l'appeler en http, c'est ce que vous faites avec votre navigateur ou avec curl : curl http://adresse.du.serveur/script.php curl http://localhost/script.php ... l'appeler via php php -f /volume/chemin/vers/script.php 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). 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
melanch Posté(e) le 23 mars 2017 Partager Posté(e) le 23 mars 2017 J'ai donc simplement saisi curl http://localhost/script/fichier.php?pass=1234 et c'est tout bon, l'argument passe MERCI BIEN FENRIR et bonne soirée à tous Dom 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
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.