8721 sujets

Développement web côté serveur, CMS

Bonjour,

j'aimerais mettre en place une tâche cron sur le serveur de mon hébergeur, afin d'avoir les statistiques de mon site, envoyées par mail. Mon hébergeur offre la possibilité d'une tâche cron à travers le cPanel, reste à réaliser le script. Planifier les jours et heures de la semaine, pas de problèmes, je connais la syntaxe, mais pas la commande cron permettant les statistiques du site.
Certains d'entre vous ont-ils déjà mis en place un tel script ?
Merci.
Modérateur
Bonjour,

Cela dépend de l'hébergeur. Dans le cas général, il faut qu'il ait installé un outil spécifique qui collecte les statistiques.

Ou alors il faut que tu en installes un.

Amicalement,
Les statistiques (AWStats) existent dans leur cPanel
L'exemple qui est donné (chez Amen) :
PHP command examples:
General example: /usr/local/bin/php /...................../public_html/path/to/cron/script

Sur leur interface cron, il y a un tableau à choix multiples pour les dates et heure et une seule ligne pour une commande cron.
Je ne comprends pas trop, il faut créer un script et le mettre sur leur serveur ?
Modifié par Bongota (12 May 2023 - 23:28)
Modérateur
Bonjour,

Oui, il faut probablement créer un shell script (puisque ça a l'air d'être un serveur Linux). Et dans ce script, tu peux mettre toute une série de commandes. Tu devrais donc pouvoir interroger AWStats (puisqu'il semble que AWStats puisse être appelé via des lignes de commande), sachant que les stats, c'est vaste, et que par conséquent il devrait y avoir pas mal de possibilités différentes (à vérifier dans la doc de AWStats). Puis il faut déposer le script sur le serveur (apparement dans un sous-dossier du dossier indiqué dans l'exemple que tu donnes, qui est peut-être tout simplement le dossier où se trouve ta home page).

Puis il faut indiquer dans le formulaire permettant de paramétrer le cron job le chemin vers ton shell script.

Et normalement, il devrait aussi y avoir quelque part dans cpanel un endroit pour saisir l'email destinataire du résultat du cron job.

Amicalement,
Modifié par parsimonhi (13 May 2023 - 14:55)
Merci, je vais voir tout ça. Du travail en perspective. Je ne vais pas me faire envoyer toutes les stats, c'est trop. Juste le nombre différent de visiteurs et peut-être le taux de rebonds.
Oui, c'est un serveur Linux.
Modifié par Bongota (12 May 2023 - 23:36)
J'ai avancé dans mon scrip cron php.
Sur le cPanel, je l'ai mis en exécution toutes les 5 minutes, afin de ne pas attendre une journée Smiley biggrin
Le script est simple pour le moment, je teste, avant d'y mettre des commandes.
<?php
    echo "The time is " . date("h:i:sa");
    ?>

Le test de ce script sur Firefox https://monsite.fr/phpcron.php fonctionne, il me retourne l'heure dans le navigateur. J'ai renseigné un mail actif dans le cPanel.
Pourtant, je ne reçois rien dans le mail renseigné. Le dossier des log du serveur du site reste vide. Que se passe-t-il ?
Le chemin donné dans le cPanl : /usr/local/bin/php /mon_serveur/public_html/phpcron.php
Il semble que c'est l'envoi d'un mail qui pose problème. Auparavant, j'avais fait un script php un peu plus complexe, qui créait une page html à la racine de mon site, à l'heure désignée. Ça a fonctionné, mais ça ne m'intéresse pas, je veux un envoi mail.
Modifié par Bongota (13 May 2023 - 20:55)
Modérateur
Bonjour,

Il faut spécifier "quelque chose" dans la ligne de commande du cron job qui exécute ton script php (qui n'est pas une commande, mais juste un fichier texte dans lequel il y a des lignes de code).

Essaie de mettre comme commande du cron job quelque chose du genre (à adapter éventuellement car y a des tonnes de paramétrages possibles) :
wget -q /usr/local/bin/php /mon_serveur/public_html/phpcron.php

ou
/usr/local/bin/php -q /usr/local/bin/php /mon_serveur/public_html/phpcron.php


Amicalement,
Modifié par parsimonhi (14 May 2023 - 17:07)
Bonjour,
j'avais déjà tenté les commandes que tu m'as données. Sans succès. Et j'ai vérifié les droits sur le fichier php, ils sont corrects.
sur le cPanel, ils donnent un exemple de commande comme ceci :
/usr/local/bin/php /home/xxxxxxx/public_html/path/to/cron/script

Je recherche la faille, mais je viens de lancer un ticket chez mon hébergeur, afin de leur demander si le deamon cron est bien lancé sur leur serveur. Je suis étonné de n'y voir aucune occurrence cron (log ou autres).
Modifié par Bongota (14 May 2023 - 20:31)
Je peux voir sur la racine tout ce qui concerne mon espace, mais pas plus. C'est du mutualisé, sans doute que les tâches cron sont cachées à mes yeux. J'attends leur réponse, dans la journée.
C'est l'envoi de mail qui ne fonctionne pas. Je viens de mettre un nouveau script php de vérification:
 <?php 
ob_start(); 
$datum = date("d­m­Y H:i"); 
echo "the date is: $datum"; 
$page = ob_get_contents(); 
ob_end_flush(); 
$fp = fopen("verifycron.html","w"); 
fwrite($fp,$page); 
fclose($fp); 
?>

Suivant l'heure donnée, il crée verifycron.html à la racine du site. Cron fonctionne donc apparemment, c'est l'expédition mail qui ne va pas.
Modérateur
Bonjour,

Pas forcément. Il faut aussi vérifier que la ligne de commande marche (celle qui commence par /usr/local/bin/php ...).

Pour cela, il faut la tester dans un terminal, et voir si le résultat du script php (les résultats des echos) apparait bien dans le terminal.

Amicalement,
Je teste le script php (installé sur le serveur) depuis mon navigateur, il fonctionne et retourne ce pourquoi il est prévu. Je remets la commande cron sur le cPanel, pointant vers le script php, avec les horaires que j'ai programmés, le script fonctionne sur ces horaires. Il y a y a bien quelque chose qui le lance sur le serveur ? Ça ne peut-être que cron.
Je pourrais "bricoler" et mettre une adresse mail dans le script php avec un envoi, mais pourquoi compliquer alors que cron est justement prévu pour envoyer un mail.
Modifié par Bongota (15 May 2023 - 20:24)
Modérateur
Bonjour,

Bongota a écrit :
Je pourrais "bricoler" et mettre une adresse mail dans le script php avec un envoi, mais pourquoi compliquer alors que cron est justement prévu pour envoyer un mail.

Oui, il vaut mieux essayer de faire marcher le cron mail.

Mais vérifier que tu peux aussi t'envoyer un email depuis un script php lancé par cron, ça peut être une étape intermédiaire permettant de valider pas mal de choses.

Amicalement,