Jump to content

tache cron puis tache cron OVH


Recommended Posts

bonjour tout le monde je pense avoir un soucis avec mon prestashop ou j'ai ma configurer les tache cron

 

sur mon prestashop j'ai sa

 

elle se sont jamais lancé

 

15082908030164569.png

 

et dans mon manager ovh j'ai sa :

 

150902110104413816.png

 

 

j'ai fait un truc qu'il faillais pas ou quoi ? merci de votre aide

Edited by PcLanDofficiel (see edit history)
Link to comment
Share on other sites

Bonjour PCLanDOfficiel,

il y a 2 fois la même image, aussi difficile de voir ce qu'il y a dans le manager OVH.

 

Par curiosité, est-ce que votre serveur OVH est un mutualisé ou un dédié ? (si c'est un mutualisé, le cron depuis prestashop ne marche pas, il faut tout faire à la main depuis le manager OVH)

 

Cordialement

Link to comment
Share on other sites

Bonjour,

Je suis également chez OVH je les ai contacté si j'exécute mes tache cron directement via le Back office de mon hébergement ceci fonctionne. 
Le problème que je rencontre c'est que via le panel OVH je ne peux pas indiqué des tache avec des caractère spéciaux or pour exécuter mes tache de mon module Amazon j'ai le sigle "&".

 

Quand je veux utiliser le module de Prestashop : Tache planifié.
Les taches s'installe bien mais ne s'exécute : Jamais

Avez vous une solution ? Je pense que mon problème est identique au tiens : PcLanDofficiel

 

Merci .

Edited by MICKAEL BLANCHARD (see edit history)
Link to comment
Share on other sites

ben voila ,(bonjour à toi au passage)

 

oui j'ai le même soucis que toi , impossible de l'intégrée comme il y a un token a chaque tache et que OVH n'en veux pas c'est trés trés dur

 

la solution c'est quoi , laisser prestashop ou les deux ovh et prestashop ???

 

cordialement http://shop.pcland-officiel.fr

Edited by PcLanDofficiel (see edit history)
Link to comment
Share on other sites

Même problème pour moi, impossible de mettre des caractères spéciaux.

Pour contourner ca, j'utilise un .php qui appelle la tache à caractère spéciaux, et c'est ce .php que j'appelle en cron.

 

Petit exemple de script pour refaire la sitemap en cron.

RebouildSitemap.php (qui est appelé par le cron ovh)

<?php
 echo 'La requête démarre ';

$url = 'http://votresite/modules/blabla?token=xxx&id_shop=1';

// Création d'un gestionnaire curl
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_TIMEOUT, 600);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Exécution
$data = curl_exec($ch);
echo $data;


// Vérification si une erreur est survenue
if(!curl_errno($ch))
{
 $info = curl_getinfo($ch);

 echo 'La requête a mis ' . $info['total_time'] . ' secondes à être envoyée à ' . $info['url'];
}

// Fermeture du gestionnaire
curl_close($ch);

 echo 'Fini';

?>

Edited by cinevente.com (see edit history)
  • Thanks 1
Link to comment
Share on other sites

ah d'accord, ben sur ovh elle s'execute mais pas dans prestashop j'aurai penser le contraire ,

 

comment forcer la mise a jours de cron , (l'actualiser tout suite quoi )

 

faut vraiment attendre une heure ?

 

En fait, sur un mutu, tu n'as pas accès au cron en dehors de l'interface de ton manager. Donc Prestashop croit qu'il a ajouté les taches crons, mais OVH les ignore, donc elles ne tournent pas.

 

Je n'ai pas trouvé de moyen de forcer l'exécution immédiate.

 

De plus, sur les OVH mutu, tu ne choisis pas la minute d'exécution dans une heure, donc parfois ca tourne à Xh55, pour peu que tu coches à Xh02, ca tournera à X+1h55, ca fait parfois long quand tu testes une correction.

 

Pour moi l'avantage de passer par un script php intermédiaire (en dehors de pouvoir utiliser des caractères spéciaux dans l'url), c'est que tu peux aussi lancer directement à la main en tapant ton chemin du php directement dans un navigateur. En retour, le souci, c'est les timeout. Les taches cron sur mutu ne timeout pas (enfin je n'ai rien qui prenne plus d'une heure à tourner), alors que lancées en direct dans le navigateur, c'est 5 minutes maximum, ca empêche donc de voir d'éventuelles traces sur les trucs un peu longs. Et ca force à bricoler une version par tranches pour debugger.

 

L'autre élément auquel il faut faire attention quand on utilise un .php d'indirection pour appeler une url, c'est les tokens d'url. Parfois une mise à jour de module ou une désinstallation/réinstallation, et le token change. Si on oublie de le changer dans son .php, il tourne dans le vide, le traitement n'est pas fait et il n'y a pas d'avertissement.

Edited by cinevente.com (see edit history)
Link to comment
Share on other sites

moi la j'ai laisse tache cron dans mon back office de de prestashop mais c'est toujours pas exécuter

 

Comme expliqué au dessus, sur un mutu, les taches cron dans le BO Prestashop ne seront jamais exécutées, car tu n'as pas accès au cron de ton serveur mutu. Le seul moyen d'y toucher, c'est le manager OVH.

Link to comment
Share on other sites

alors si j'ai bien suivi je fait un .php avce sa dedans

 

<?php
 echo 'La requête démarre ';

$url = 'http://votresite/mod...n=xxx&id_shop=1'; la ici je met tout les tache cron ????

// Création d'un gestionnaire curl
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_TIMEOUT, 600);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Exécution
$data = curl_exec($ch);
echo $data;


// Vérification si une erreur est survenue
if(!curl_errno($ch))
{
 $info = curl_getinfo($ch);

 echo 'La requête a mis ' . $info['total_time'] . ' secondes à être envoyée à ' . $info['url'];
}

// Fermeture du gestionnaire
curl_close($ch);

 echo 'Fini';

?>

Link to comment
Share on other sites

Je ne connais pas le contenu de tes scripts .php appelés dans le manager ovh. (je viens de voir que tu as changé l'image dans le post originel).

 

Il est fort possible qu'ils fonctionnent.

 

Le problème de ma solution, c'est que ca va être compliqué à mettre en place pour toi si tu ne comprends pas ce qui se passe, ca ne marchera pas avec le multi-boutique, et ca ne marchera plus dès que quelque chose changera.

 

Mais sinon, dans $url, tu ne mets pas toutes les taches cron, tu mets l'url d'une seule tache, et il te faut faire un .php par tache.

Exemple, ton propre gsitemap.php serait comme ca :

<?php
 echo 'La requête démarre ';

$url = 'http://shop.pcland-officiel.fr/modules/gsitemap/gsitemap-cron.php?token=05aa4ce684&idshop=1';

// Création d'un gestionnaire curl
$ch = curl_init($url);

curl_setopt($ch, CURLOPT_TIMEOUT, 600);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Exécution
$data = curl_exec($ch);
echo $data;


// Vérification si une erreur est survenue
if(!curl_errno($ch))
{
 $info = curl_getinfo($ch);

 echo 'La requête a mis ' . $info['total_time'] . ' secondes à être envoyée à ' . $info['url'];
}

// Fermeture du gestionnaire
curl_close($ch);

 echo 'Fini';

?>

 

et c'est lui que tu appeleras dans le manager OVH pour la tache cron de rebuild du sitemap.

 

Si tu fonctionnes comme cela, crée un nouveau répertoire pour centraliser tous tes .php au même endroit (n'oublie pas de mettre un index.php dedans pour que les gens ne puissent pas voir le contenu du répertoire).

Link to comment
Share on other sites

Pour index.php, tu recopies n'importe lequel du répertoire d'un autre module, par exemple celui d'un autre module, ca évite qu'on puisse lister le contenu de ton répertoire.

 

Oui, mes taches s'exécutent, mais tu n'as pas vraiment de remontées directes. Pour ca, il faut ajouter des logs, ou un envoi de mail. Par contre, quand ca plante, j'ai un mail ovh qui m'est remonté.

Link to comment
Share on other sites

Pour ma part, quand j'ai vu que ca ne marchait pas, j'ai abandonné directement les cron dans le backoffice de Prestashop (surtout que c'est clair que ca ne peut pas marcher si tu es sur un mutu OVH).

Pourquoi ca marque que ca a tourné ? Je ne sais pas. Peut-être que c'est le lancement de la tache elle-même lors de l'installation du module, ca peut être n'importe quoi.

L'important c'est : est-ce que ca tourne tous les jours ? Regarde la date de ton fichier sitemap en ftp, mets la tache (c'est la plus simple à faire) en cron dans OVH, regarde si ca tourne en regardant la date de modif de ton fichier sitemap, si c'est bon, pragmatisme, bascule toutes tes taches en cron OVH avec des fichiers .php et passe à autre chose ^^

Link to comment
Share on other sites

  • 3 weeks later...

Bon, si vous voulez la solution qui marche pour les mutu ovh:

 

Allez dans le module cronJob de Prestashop et rentrez vos urls

  • Choisissez le mode avancé et copiez l'adresse de l'url

 

Créez un fichier appelé "cron.php" à la racine de votre shop

  • Dans celui-ci vous mettez:
#!/usr/local/bin/php
<?php
error_reporting(E_ALL);

$break_line = (php_sapi_name() == "cli") ? chr(13) : '<br/>';
$urls = array(
'http://www.votre_site/adminXXXX/index.php?controller=AdminCronJobs&token=a0c6f12c14a4a96b3937e7fda7182ebe'
);
echo $break_line.'Cron Report of '.date('Y-m-d H:i:s').$break_line.$break_line; 
foreach($urls as $key => $url) {

	$output .= $break_line.'Job '.($key + 1).' : ';
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	if($data = curl_exec($ch)) {
		echo $break_line;
		$output .= 'Ok';
	}
	else
		$output .= 'Failed';
	curl_close($ch);
}
die($output);
?>

en remplaçant évidemment 'http://www.votre_site/adminXXXX/index.php?controller=AdminCronJobs&token=a0c6f12c14a4a96b3937e7fda7182ebe' par l'url indiquée dans le module.

  • Mettez toutes vos tâches en exécution: tous les jours, tous les mois, toutes les semaines et toutes les heures

Cela vous permettra de le faire fonctionner quelque soit l'horaire choisi dans le cron OVH

 

Dans votre panel OVH, tâches planifiées créez une nouvelle tâche:

Adresse (dépend de la structure de votre ftp) :

Si votre boutique est dans www

  • www/cron.php 

Si vous êtes dans un sous-répertoire

  • www/votre_répertoire/cron.php

Si vous êtes dans un répertoire adjacent à www

  • votre_repertoire/cron.php

 

Nom de la tache: cron Prestashop

Version php : 5.4

Log par email (si vous en voulez)

Fréquence:

Tous les jours et cochez au moins une heure par jour

Et Validez

 

Votre script sera exécuté ainsi régulièrement

Vous pouvez tester en mode http en allant à l'url: http://votre_boutique.com/cron.php

Edited by Eolia (see edit history)
  • Like 3
Link to comment
Share on other sites

Bon, si vous voulez la solution qui marche pour les mutu ovh:

 

Allez dans le module cronTab de Prestashop et rentrez vos urls

  • Choisissez le mode avancé et copiez l'adresse de l'url

 

Créez un fichier appelé "cron.php" à la racine de votre shop

  • Dans celui-ci vous mettez:
#!/usr/local/bin/php
<?php
error_reporting(E_ALL);

$break_line = (php_sapi_name() == "cli") ? chr(13) : '<br/>';
$urls = array(
'http://www.votre_site/adminXXXX/index.php?controller=AdminCronJobs&token=a0c6f12c14a4a96b3937e7fda7182ebe'
);
echo $break_line.'Cron Report of '.date('Y-m-d H:i:s').$break_line.$break_line; 
foreach($urls as $key => $url) {

	$output .= $break_line.'Job '.($key + 1).' : ';
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	if($data = curl_exec($ch)) {
		echo $break_line;
		$output .= 'Ok';
	}
	else
		$output .= 'Failed';
	curl_close($ch);
}
die($output);
?>

en remplaçant évidemment 'http://www.votre_site/adminXXXX/index.php?controller=AdminCronJobs&token=a0c6f12c14a4a96b3937e7fda7182ebe' par l'url indiquée dans le module.

  • Mettez toutes vos tâches en exécution: tous les jours, tous les mois, toutes les semaines et toutes les heures

Cela vous permettra de le faire fonctionner quelque soit l'horaire choisi dans le cron OVH

 

Dans votre panel OVH, tâches planifiées créez une nouvelle tâche:

Adresse (dépend de la structure de votre ftp) :

Si votre boutique est dans www

  • www/cron.php 

Si vous êtes dans un sous-répertoire

  • www/votre_répertoire/cron.php

Si vous êtes dans un répertoire adjacent à www

  • votre_repertoire/cron.php

 

Nom de la tache: cron Prestashop

Version php : 5.4

Log par email (si vous en voulez)

Fréquence:

Tous les jours et cochez au moins une heure par jour

Et Validez

 

Votre script sera exécuté ainsi régulièrement

Vous pouvez tester en mode http en allant à l'url: http://votre_boutique.com/cron.php

 

Bonjour !

 

Un grand merci Elolia, encore une fois tu me sauve ! C'est exactement ce que je recherchais depuis 3 mois ! Ca fonctionne parfaitement.

 

(Petit rectificatif, le module d'origine prestashop où mettre en place ta solution est CronJob et non Crontab) ;)

 

Bon WE à toi.

Edited by Wibleo (see edit history)
Link to comment
Share on other sites

Salut

 

 

Je bute aussi sur un probleme avec les tache Cron

 

Je suis sur un dedie, donc j'utilise directement le Cron du systeme.

Je pense que je dois avoir un probleme de syntaxe

 

dans /etc/crontab, j'ai ca par exemple pour la reconstruction de l'index de recherche:

30 4 * * * root wget -q http://www.monsite.com/monadmin/searchcron.php?full=1&token=ToKen > /dev/null 2> /var/log/cron.log

 

Mis a part de me creer un fichier dans /root dont le nom est searchcron.php?full={numero dordre} a chaque execution, je ne vois pas trop le resultat.

D'ailleur, je ne comprends pas pourquoi cela cree un fichier.

De plus je n'ai pas non plus de trace dans cron.log

 

Si l'un de vous a une idee je suis preneur :)

Car pour l'instant je le fait a la main .... quand j'y pense :( (c'est pas top ca)

 

 

Cordialement

Hugues

Link to comment
Share on other sites

  • 4 months later...

Bon, si vous voulez la solution qui marche pour les mutu ovh:

 

Allez dans le module cronJob de Prestashop et rentrez vos urls

  • Choisissez le mode avancé et copiez l'adresse de l'url

 

Créez un fichier appelé "cron.php" à la racine de votre shop

  • Dans celui-ci vous mettez:
#!/usr/local/bin/php
<?php
error_reporting(E_ALL);

$break_line = (php_sapi_name() == "cli") ? chr(13) : '<br/>';
$urls = array(
'http://www.votre_site/adminXXXX/index.php?controller=AdminCronJobs&token=a0c6f12c14a4a96b3937e7fda7182ebe'
);
echo $break_line.'Cron Report of '.date('Y-m-d H:i:s').$break_line.$break_line; 
foreach($urls as $key => $url) {

	$output .= $break_line.'Job '.($key + 1).' : ';
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	if($data = curl_exec($ch)) {
		echo $break_line;
		$output .= 'Ok';
	}
	else
		$output .= 'Failed';
	curl_close($ch);
}
die($output);
?>

en remplaçant évidemment 'http://www.votre_site/adminXXXX/index.php?controller=AdminCronJobs&token=a0c6f12c14a4a96b3937e7fda7182ebe' par l'url indiquée dans le module.

  • Mettez toutes vos tâches en exécution: tous les jours, tous les mois, toutes les semaines et toutes les heures

Cela vous permettra de le faire fonctionner quelque soit l'horaire choisi dans le cron OVH

 

Dans votre panel OVH, tâches planifiées créez une nouvelle tâche:

Adresse (dépend de la structure de votre ftp) :

Si votre boutique est dans www

  • www/cron.php 

Si vous êtes dans un sous-répertoire

  • www/votre_répertoire/cron.php

Si vous êtes dans un répertoire adjacent à www

  • votre_repertoire/cron.php

 

Nom de la tache: cron Prestashop

Version php : 5.4

Log par email (si vous en voulez)

Fréquence:

Tous les jours et cochez au moins une heure par jour

Et Validez

 

Votre script sera exécuté ainsi régulièrement

Vous pouvez tester en mode http en allant à l'url: http://votre_boutique.com/cron.php

 

 

Ça a l'air de bien fonctionner chez moi. Merci :)

Link to comment
Share on other sites

  • 4 months later...

Je remonte un peu le sujet désolé mais ayant des soucis d’exécution de tache cron, je me permet donc de poser cette question : Est-ce que l'astuce ce Eolia marche aussi pour les serveurs 1&1 ? Je ne vois pas de commentaire précis dans le fichier cron.php qui ferait qu'il soit spécifique à OVH mais je préfère poser la question avant de me lancer dans d'autre test.

Merci de votre réponse.

Link to comment
Share on other sites

  • 2 weeks later...

Bon, si vous voulez la solution qui marche pour les mutu ovh:

 

Allez dans le module cronJob de Prestashop et rentrez vos urls

  • Choisissez le mode avancé et copiez l'adresse de l'url

 

Créez un fichier appelé "cron.php" à la racine de votre shop

  • Dans celui-ci vous mettez:
#!/usr/local/bin/php
<?php
error_reporting(E_ALL);

$break_line = (php_sapi_name() == "cli") ? chr(13) : '<br/>';
$urls = array(
'http://www.votre_site/adminXXXX/index.php?controller=AdminCronJobs&token=a0c6f12c14a4a96b3937e7fda7182ebe'
);
echo $break_line.'Cron Report of '.date('Y-m-d H:i:s').$break_line.$break_line; 
foreach($urls as $key => $url) {

	$output .= $break_line.'Job '.($key + 1).' : ';
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	if($data = curl_exec($ch)) {
		echo $break_line;
		$output .= 'Ok';
	}
	else
		$output .= 'Failed';
	curl_close($ch);
}
die($output);
?>

en remplaçant évidemment 'http://www.votre_site/adminXXXX/index.php?controller=AdminCronJobs&token=a0c6f12c14a4a96b3937e7fda7182ebe' par l'url indiquée dans le module.

  • Mettez toutes vos tâches en exécution: tous les jours, tous les mois, toutes les semaines et toutes les heures

Cela vous permettra de le faire fonctionner quelque soit l'horaire choisi dans le cron OVH

 

Dans votre panel OVH, tâches planifiées créez une nouvelle tâche:

Adresse (dépend de la structure de votre ftp) :

Si votre boutique est dans www

  • www/cron.php 

Si vous êtes dans un sous-répertoire

  • www/votre_répertoire/cron.php

Si vous êtes dans un répertoire adjacent à www

  • votre_repertoire/cron.php

 

Nom de la tache: cron Prestashop

Version php : 5.4

Log par email (si vous en voulez)

Fréquence:

Tous les jours et cochez au moins une heure par jour

Et Validez

 

Votre script sera exécuté ainsi régulièrement

Vous pouvez tester en mode http en allant à l'url: http://votre_boutique.com/cron.php

 

 

Merci beaucoup je cherchais la solution depuis longtempppppssssssssssssss....très longtemps.

 

Par contre mes tache qui une heure precise pour s’exécute, ne sont exécute .

 

 

Une petite aide sup serai bienvenue svp

MERCI

Edited by pinkxana (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

Un grand merci Eolia !

 

Question alakon : si j'ai plusieurs tâches cron à éxécuter, je créée un fichier cronX.php pour chaque tâche ou je peux ajouter les URLs dans le même fichier cron.php d'origine ?

Car dans ce cas, j'ai un message d'erreur à l'éxécution du cron.php.

Link to comment
Share on other sites

Un grand merci Eolia !

 

Question alakon : si j'ai plusieurs tâches cron à éxécuter, je créée un fichier cronX.php pour chaque tâche ou je peux ajouter les URLs dans le même fichier cron.php d'origine ?

Car dans ce cas, j'ai un message d'erreur à l'éxécution du cron.php.

Oui question à la con^^

Avec ce script, appelez l'url du module cron de Prestashop, rien d'autre

Dans le module cron de Prestashop, mettez autant d'urls que vous voulez

Link to comment
Share on other sites

  • 4 months later...

Merci pour votre réponse.
 

La date n'est pas bonne car je lance la commande cron directement avec le lien fournis sur le module pour exécuter manuellement mes tâches cron tous les jours soit aujourd'hui.

Mais les tâches ne s’exécute plus automatiquement depuis 15 jours a peu près.

Avec le lien direct ça fonctionne mais pas avec le fichier cron.php qui me répond : Job 1 failed

Le module est bien activée. 

Merci beaucoup en tout cas
 

Edited by MICKAEL BLANCHARD (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

Bonjour,

Suite à l'ouverture du Ticket OVH le problème a été résolu 
 

#!/usr/local/bin/php 
Cron Report of 2016-12-03 13:11:35

cronjobs_prestashop

Job 1 : Ok

Le fichier /cron.php est bien exécuté mais les tâche cron ne sont pas lancées ... Si je prend le lien manuellement et l'execute la tâche s'execute avec succès.

Avez vous une idée du problème?

Cordialement

Link to comment
Share on other sites

  • 1 year later...
Le 24/09/2015 à 9:09 AM, Eolia a dit :

Bon, si vous voulez la solution qui marche pour les mutu ovh:

Bonjour,

J'ai testé sur mon navigateur et j'obtiens :

Notice: Undefined variable: output in /home/monsite/www/cron.php on line 12
cronjobs_prestashop

 

Une piste où chercher ?

Link to comment
Share on other sites

  • 2 months later...
  • 1 year later...

Aucune idée pour les 1.7, ca dépend surtout du module cronjobs donc à priori je dirais oui.

Le forum du 2nd lien a été fermé car nous avons eu l'interdiction d'utiliser le nom Prestashop dans le domaine.

Link to comment
Share on other sites

  • 2 months later...

Bonjour Eolia,

 

Tout d'abord merci pour ton aide !!

Je viens d'utiliser ta méthode pour ma mise à jour des stocks de mon site. Comment puis-je savoir si tout est correctement configuré ? Car comme tu l'as expliqué, lorsque je vais sur http://monsite/cron.php, tout est ok. Dans ovh, j'ai programmé à 9, 10 et 11h l'exécution de la tache mais pour le moment je ne vois pas mes stocks changer... je veux donc être sure que tout est bien correctement configuré !!

 

Merci :)

 

Bérengère

Link to comment
Share on other sites

Voici la solution qui fonctionne et vous permet d'utiliser le module natif.

Allez dans le module cronJob de Prestashop et rentrez vos urls

Choisissez le mode avancé et copiez l'adresse de l'url.

Créez un fichier appelé "cron.php" à la racine de l'admin de votre shop

Dans celui-ci vous mettez:

    <?php /* 
    ** Changez cette variable en true ou false pour que le cron
    ** affiche quelque chose - ceci apparaît dans les log de la 
    ** console
    */
    $verbose = true;
    
    /*
    ** Remplacez l'url http ou https://.... avec celle présente
    ** sur l'écran de configuration du module cronjobs
    ** après avoir activé le mode avancé
    */
    $cronjob_url = 'https://www.votre_site/adminXXXX/index.php?controller=AdminCronJobs&token=a0c6f12c14a4a96b3937e7fda7182ebe';
    
    /**************************************
    ** Ne rien modifier après cette ligne **
    ***************************************/
    error_reporting(E_ALL);
    $break_line = (php_sapi_name() == "cli") ? PHP_EOL : '<br/>
';
    $output = $verbose ? $break_line.'Cron Report of '.date('c').$break_line.$break_line : ''; 
    
    $cronjob_url = trim($cronjob_url);
    $ch = curl_init($cronjob_url);
    curl_setopt($ch, CURLOPT_URL, $cronjob_url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:53.0) Gecko/20100101 Firefox/53.0');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    
    $data = curl_exec($ch);
    
    if ($verbose) {
        if($data)
            $output .= 'Ok'.$break_line.$data;
        else 
            $output .= 'Failed';
    }
    curl_close($ch);
    
    die($output);

en remplaçant évidemment 'http://www.votre_sit...937e7fda7182ebe' par l'url indiquée dans le module.

Mettez toutes vos tâches en exécution: réglez les heures, jours, correspondant à leur usage.

Dans votre panel OVH, tâches planifiées créez une nouvelle tâche:

Adresse (dépend de la structure de votre ftp) :

Si votre boutique est dans www, www/votre_repertoire_admin/cron.php

Si vous êtes dans un sous-répertoire, www/votre_répertoire_prestashop/votre_repertoire_admin/cron.php

Si vous êtes dans un répertoire adjacent à www, votre_répertoire_prestashop/votre_repertoire_admin/cron.php

Nom de la tache: cron Prestashop

Version php : 5.4

Log par email (si vous en voulez)

Fréquence: Tous les jours et toutes les heures du jour

Validez

Votre script sera exécuté toutes les heures et déclenchera les tâches planifiées dans cronjobs.

Vous pouvez tester en mode http en allant à l'url: http://votre_boutique.com/adminXXX/cron.php

Si votre site est en https, modifiez l'url en conséquence.

 

Passez le paramètre $verbose à true comme expliqué en commentaire et dans votre OVH cochez "Log par email" (si vous en voulez)

Dans votre module cron vous avez également la date et l'heure de la dernière exécution des scripts.

Edited by Eolia (see edit history)
  • Like 1
Link to comment
Share on other sites

Alors je viens de regarder j'ai bien une dernière date d'exécution à 10h08 dans mon module mais mes stocks ne sont pas actualisés, j'imagine que j'ai peut être un souci dans l'url de ma tache cron... 

dans le module me donnant l'url (capture ci-joint)  j'ai "2 options" si je puis dire, je ne vois pas bien quelle est la différence entre les deux, je n'ai pas de configuration spécifique ? ou bien la configuration spécifique correspond au mode avancé ? 

 

Par contre aucun mail recu, pourtant j'ai bien inscrit mon adresse mail lors de la programmation de ma tache sur ovh, bizarre !

Link to comment
Share on other sites

  • 1 year later...

Salut @Eolia,

J'ai galéré tout l'après-midi pour mettre en place le module de CRON prestashop d'une 1.6.2 en place sur OVH, offre perf2014x1.
Je viens de tomber sur ton script, je le test en direct, en l'appelant depuis le SSH OVH :

Contenu du fichier :

<?php /*
    ** Changez cette variable en true ou false pour que le cron
    ** affiche quelque chose - ceci apparaît dans les log de la
    ** console
    */
    $verbose = true;

    /*
    ** Remplacez l'url http ou https://.... avec celle présente
    ** sur l'écran de configuration du module cronjobs
    ** après avoir activé le mode avancé
    */
    $cronjob_url = 'https://www.prestaplugins.com';

    /**************************************
    ** Ne rien modifier après cette ligne **
    ***************************************/
    error_reporting(E_ALL);
    $break_line = (php_sapi_name() == "cli") ? PHP_EOL : '<br/>
';
    $output = $verbose ? $break_line.'Cron Report of '.date('c').$break_line.$break_line : '';

    $cronjob_url = trim($cronjob_url);
    $ch = curl_init($cronjob_url);
    curl_setopt($ch, CURLOPT_URL, $cronjob_url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:53.0) Gecko/20100101 Firefox/53.0');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

    $data = curl_exec($ch);

    if ($verbose) {
        if($data)
            $output .= 'Ok'.$break_line.$data;
        else
            $output .= 'Failed';
    }
    curl_close($ch);

    die($output);

Je l'appelle comme ça depuis la console SSH OVH :
usr/local/php5.6/bin/php /homez.230/*******/www3/cron_ovh2.php

et j'obtiens :
Failed

Une idée du soucis please ?

Edited by Yann - Prestaplugins (see edit history)
Link to comment
Share on other sites

  • 1 year later...
On 9/24/2015 at 9:09 AM, Eolia said:

Bon, si vous voulez la solution qui marche pour les mutu ovh:

 

Allez dans le module cronJob de Prestashop et rentrez vos urls

  • Choisissez le mode avancé et copiez l'adresse de l'url

 

Créez un fichier appelé "cron.php" à la racine de votre shop

  • Dans celui-ci vous mettez:
#!/usr/local/bin/php
<?php
error_reporting(E_ALL);

$break_line = (php_sapi_name() == "cli") ? chr(13) : '<br/>';
$urls = array(
'http://www.votre_site/adminXXXX/index.php?controller=AdminCronJobs&token=a0c6f12c14a4a96b3937e7fda7182ebe'
);
echo $break_line.'Cron Report of '.date('Y-m-d H:i:s').$break_line.$break_line; 
foreach($urls as $key => $url) {

	$output .= $break_line.'Job '.($key + 1).' : ';
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	if($data = curl_exec($ch)) {
		echo $break_line;
		$output .= 'Ok';
	}
	else
		$output .= 'Failed';
	curl_close($ch);
}
die($output);
?>

en remplaçant évidemment 'http://www.votre_site/adminXXXX/index.php?controller=AdminCronJobs&token=a0c6f12c14a4a96b3937e7fda7182ebe' par l'url indiquée dans le module.

  • Mettez toutes vos tâches en exécution: tous les jours, tous les mois, toutes les semaines et toutes les heures

Cela vous permettra de le faire fonctionner quelque soit l'horaire choisi dans le cron OVH

 

Dans votre panel OVH, tâches planifiées créez une nouvelle tâche:

Adresse (dépend de la structure de votre ftp) :

Si votre boutique est dans www

  • www/cron.php 

Si vous êtes dans un sous-répertoire

  • www/votre_répertoire/cron.php

Si vous êtes dans un répertoire adjacent à www

  • votre_repertoire/cron.php

 

Nom de la tache: cron Prestashop

Version php : 5.4

Log par email (si vous en voulez)

Fréquence:

Tous les jours et cochez au moins une heure par jour

Et Validez

 

Votre script sera exécuté ainsi régulièrement

Vous pouvez tester en mode http en allant à l'url: http://votre_boutique.com/cron.php

Bonjour,

J'ai mis en place votre script, mais pas encore la tache planifiée sur le panel OVH, j'ai utilisé uniquement le mode "test" http://votre_boutique.com/cron.php

Je n'arrive seulement à faire fonctionner les taches que si je mets "toutes les heures" j'ai mis des heures précises et le lendemain j'ai relancé http://votre_boutique.com/cron.php rien ne s'est lancé, est-ce normal ?

Est-ce qu'en mettant la tache planifiée sur le panel OVH, les heures précises seront bien prises en compte ?

Merci d'avance pour votre aide !

Link to comment
Share on other sites

OVH n'en a rien à faire de l'heure, d'ailleurs elle n'est pas paramétrable chez eux.

Si vous enregistrez la tache cron OVH à 17h18 elle s'effectuera toutes les heures/18min.

Donc si vous avez des urls de cron à 23h00 dans le module, elles s'effectueront à 23h18, etc...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...