Script PHP utilisé pour CRON ne fonctionne pas

Bonjour à toutes et à tous,

J'ai un hébergement chez OVH et je souhaite utiliser un script CRON pour effacer le contenu d'une table tous les soirs.

Voici mon script :

define('ROOT',dirname( FILE )); // répertoire
include ROOT . '/ref/config.php';

$sql = "DELETE FROM element_reset";

if ($conn->query($sql) == TRUE) {
/// Vérifier le nombre de lignes supprimées
if ($conn->affected_rows > 0) {
echo "Les lignes obsolètes de la table ont été supprimées avec succès.";
} else {
echo "Aucune ligne à supprimer. La table est déjà vide ou toutes les lignes sont encore valides.";
}
/
} /else {
echo "Erreur lors de la suppression des lignes obsolètes: " . $conn->error;
}
/

$conn->close();

?>

A noter que mon arborescence est :
I
I- dossier
I- ref

le fichier config.php se trouve dans le répertoire /ref et contient les identifiants pour me connecter


Quand je programme le fichier dans le CRON, le seul message d'erreur que j'obtiens est :

Suite à 10 erreurs d'éxécution consécutives, une tache planifiée CRON a été désactivée.

Quand j'éxécute le fichier depuis un navigateur, cela fonctionne sans probleme

A noter que le fichier config est dans un répertoire protégé par .htacess et a les droits suivants : 0604

J'ai également mis le fichier PHP contenant le script avec les droits 0604

Est ce que quelqu'un pourrait m'aider à comprendre d'où viendrait le probleme ?

Merci d'avance

Bonjour @PatrickU2

Bon je ne peux pas vous aider directement pour votre problème.

Mais par contre, vous videz tout le contenu d'une table tous les soirs.
En effet, le fait de supprimer tout le contenu d'une ligne , ne supprime pas l'espace pris par cette ligne.
Il faut, après l'effacement de toutes ces lignes, faire un compactage.


Est ce que quelqu'un pourrait m'aider à comprendre d'où viendrait le probleme ?


Dans votre cron, appelez-vous PHP ou bien appelez-vous l'URL de votre site pour que le PHP s'exécute dans le contexte du serveur web et non par l'environnement cron ?

Bonjour,

Vous devriez regarder les logs de votre script démarré en cron.
http://logs.clusterXXX.hosting.ovh.net/ rubriques CRON

Et effectivement après le DELETE, faire un OPTIMIZE TABLE tablename peut être souhaitable.

Victor

Merci de cette information, quel est le script à lancer pour faire un compactage ?

Bonjour, qu'entendez vous par appel PHP ou URL du site ?

Dans CRON , j'ai défini dans le champ commande à exécuter :
j'ai mis le lien vers la page PHP qui est hébergée dans mon site : site/ref/clear_table.php


appel PHP ou URL du site


Je pense que vous avez wget et/ou curl disponibles.
(je n'ai pas d'hébergement pro pour tester, je bosse plutôt sur serveur dédié).

$sql = "DELETE FROM element_reset";

Puis :

$sql = "OPTIMIZE TABLE element_reset";

Voici le log que j'ai (ca date d'aout mais c'est toujours le meme en septembre

[2024-08-30 10:36:02] ## OVH ## START - 2024-08-30 10:36:02.466056 executing: /usr/local/php8.3/bin/php /homez.734/nom_herbergement/sousdossier/ref/cron_reset.php
[2024-08-30 10:36:02]
[2024-08-30 10:36:02] ## OVH ## END - 2024-08-30 10:36:03.013383 exitcode: 255

Bonjour,

Essayez de mettre cela au tout début du script pour afficher les éventuelles erreurs dans le log :
ini_set('display_errors', '1');
ini_set('log_errors', '1');

Bonjour
J'ai réussi à résoudre le probleme. C'est bien ce que je pensais : il faut utiliser l'adresse URL absolue pour accéder au fichier config.

A la place de
define('ROOT',dirname( FILE )); // répertoire
include ROOT . '/ref/config.php';
J'ai mis :
`include /home/moncompte/www/ref/config.php`
par contre savez vous comment faire si je veux mettre une adresse du style
define('ROOT',dirname( FILE )); // répertoire
include ROOT . '/ref/config.php';
Si je veux pas exemple migrer mon hébergement ?

Merci


Si je veux pas exemple migrer mon hébergement ?

Bonjour @PatrickU2

Qu'entendez-vous par là ?

Quel Domaine ?

Si par exemple, un jour, je veux mettre mon site sur un autre hébergeur.

Si je mets un chemin de type
`define('ROOT',dirname( FILE )); // répertoire`

je n'aurais pas à ne pas oublier de modifier le chemin relatif


Si par exemple, un jour, je veux mettre mon site sur un autre hébergeur.

Bonjour @PatrickU2

Voir dans mon guide le paragraphe :
**V - Duplication, transfert de WordPress vers un autre hébergement**

https://www.wordetweb.com/word-et-web/WORDPRESS-guide-installation-de-WordPress-premier-domaine-chez-OVH-FR.htm#_V_-_

Bonjour,

Utiliser la variable __DIR__ de PHP ?

Cordialement, janus57

oui mais comment l utiliser justement ?
J'ai essaye cela mais cela ne fonctionne pas
define('ROOT',dirname( FILE )); // répertoire
include ROOT . '/ref/config.php';

a la place de
`include /home/moncompte/www/ref/config.php`

quelle est la bonne syntaxe ?

Bonjour,

Normalement cette variable retourne le chemin "root" d'un point de vue PHP.

Je vous conseil de tester à coup de var_dump.

Cordialement, janus57

Merci à tous. J'ai bien réussi à faire ce que je voulais