Jump to content

[RESOLU] Génération de taches planifiées.


MaxProd

Recommended Posts

Bonsoir.

Petite question rapide aux experts en développement de modules ?

Est-ce que Prestashop intègre une notion de tache planifiée ? Type Cron sous Unix. Sans devoir passer par une API tiers bien sur ? Je n'ai rien vu dans la doc.

Petite explication rapide, je prépare le cahier des charges de mon module de gestion de téléchargement et de protection. Et dans le cadre de la génération automatique de répertoire de téléchargement, j'aurais aimé automatiser le déclenchement du nettoyage des répertoires temporaires obsolètes.

Si quelqu'un a des tuyaux là dessus, ça m'intéresse !

Merci d'avance.

Max

Link to comment
Share on other sites

Bonsoir Max.

Pour votre question :
Est-ce que Prestashop intègre une notion de tache planifiée ? Type Cron sous Unix.

La réponse est oui et pour vous donner une idée regarder du coté des modules birthdaypresent & followup particulièrement leur fichiers cron.php ainsi que leur fichiers .php respective cela va vous donner je pense la marche à suivre.

J’ai récemment fait un module avec des taches planifiées ou je me suis inspirée de cette méthode.

Voir si ça correspond à ce que vous recherchez.

Je vous transmets également cette doc qui dans mon cas m’a été utile.
[DOC] Utilisation des taches CRON

Cordialement.
Melki-Tsedeq

Link to comment
Share on other sites

Euh... PrestaShop ne gère pas du tout un système de cron.

Car dans le post que tu link, "Boby Style" explique comment mettre en place des cron via "crontab" (qui est un utilitaire de cron son linux). Il faut donc avoir accès en ssh à ton hébergement pour effectuer ça.

A l'heure actuelle, il faut effectivement passer par un système extérieur, sauf certains hébergeurs qui permettent l'ajout de cron via leur BackOffice.

Link to comment
Share on other sites

Bonjour Pierre-Yves.

Si vous regardez bien c’est ce que j’ai dit.

Pour votre question :
Est-ce que Prestashop intègre une notion de tache planifiée ? Type Cron sous Unix.
Ma réponse s’arrête là.


Je n’ai pas répondu à
Sans devoir passer par une API tiers bien sur ? Je n’ai rien vu dans la doc.

Et je lui ai donner une marche à suivre pour :
Dans le cadre de la génération automatique de répertoire de téléchargement, j’aurais aimé automatiser le déclenchement du nettoyage des répertoires temporaires obsolètes.

Et je lui ai indiqué la doc car dans mon cas cela m’a été utile.

Avez-vous une autre solution à lui indiqué ou une documentation sur : sauf certains hébergeurs qui permettent l’ajout de cron via leur BackOffice. Pouvez-vous Développer car cela peu m’intéressé aussi.

Cordialement.
Melki-Tsedeq
Link to comment
Share on other sites

Bon j'avoue avoir lu en diagonal la réponse de Melki que je remercie encore pour sa réactivité dans ses réponses. Mais effectivement Pierre-Yves a raison pour le coup. PrestaShop n'intègre pas cette notion. Je ne parle même pas du mécanisme de tâches planifiées côté serveur, mais plus d'un script appelé à intervalle régulier (un genre de callback).

Alors dans mon cas, pour être clair sur l'utilité de la démarche. Mon objectif c'est de mettre en place un système de téléchargement volatile. Je m'explique.

Il existe différentes méthodes, et mon but est avant tout de préserver l'exécutable de l'installer de mon application (full version). Pour ce faire, il faut absolument éviter d'avoir une URL de type : http://www.monsite.com/download/fullsetup.exe. Tout le monde comprend pourquoi.

L'idée serait plutôt d'opter pour une URL volatile et personnelle à chaque client de type : http://download.monsite.com/62efee001b370b0ca3c541af02bb647c/fullsetup.exe

D'après mes recherches sur le sujet, et encore je suis loin d'avoir fait le tour, il semblerait que certains optent pour des redirections plutôt que de la duplication de fichier. En effet, un professionnel qui vend des centaines de logiciels par jours se voit contraint de posséder un serveur de téléchargement dédié pour permettre par exemple de stocker temporairement on va dire 150 liens volatiles pour l'exemple.

150 fois la taille de l'exécutable on va dire de 10Mo = 1500Mo / 1024 = 1.46Go * par le nombre de jours disponible (3/5 jours de disponibilité) ça grimpe forcément et en plus ça génère de la fragmentation de disque dur côté serveur après effacement des dossiers temporaires. La méthode n'est pas forcément viable surtout dans mon cas où je souhaite rester simple.

Il existe un module pour Apache qui gère ce genre de chose, mais cela passe par deux points :
1) ajouter un module à Apache et donc gérer les aspects techniques à ce niveau.
2) avoir un serveur distant de stockage des fichiers à télécharger
liens :
http://redmine.lighttpd.net/wiki/lighttpd/Docs:ModSecDownload
http://www.cyberciti.biz/tips/lighttpd-mod_secdownload-configuration.html
Mais bon, je me trompe peut être car il y a encore certains points qui m'échappent là dedans.

Il y a des alternatives comme un script PHP de type get_file.php qui prend un token personnalisé en paramètre :
http://onlamp.com/pub/a/php/2002/12/05/one_time_URLs.html
http://www.ardamis.com/2008/06/11/protecting-a-download-using-a-unique-url/

Mais ma question est surtout de cacher réellement l'URL du fichier principal. Je crains qu'avec ces dernières méthodes on retrouve plutôt facilement l'URL principale ne serais-ce que dans les entêtes.

header("Cache-Control: public, must-revalidate");
header("Pragma: no-cache");
header("Content-Type: " . $mm_type);
header("Content-Length: " .(string)(filesize($file)) );
header('Content-Disposition: attachment; filename="'.$filename.'"');
header("Content-Transfer-Encoding: binary\n");



Voilà, si quelqu'un à des informations à ce sujet, ça m'intéresse vraiment. Et pour finir à propos de Cron, effectivement c'est côté hébergement que ça se passe. Il faut donc gérer soit même un script de nettoyage en fonction de la politique de gestion mise en place.

Petit screenshot du Manager OVH pour ceux qui y sont.

Amicalement,
Max

17033_pxjp6dYIybqtJZnImFxN_t

Link to comment
Share on other sites

Cela est au final très très simple.

Imaginons les liens suivants :

http://download.monsite.com/62efee001b370b0ca3c541af02bb647c/fullsetup.exe // Client 1
http://download.monsite.com/a938c05f576cbaaeb210bf09705032e1/fullsetup.exe // Client 2
http://download.monsite.com/53ebca73cace01c99f87dc50ac7926a6/fullsetup.exe // Client 3



Ces liens mènent tous au même fichier. Pour éviter de devoir "copier/coller" le fichier dans un répertoire à chaque fois, on va utiliser le Rewrite :

# On active les Rewrite
RewriteEngine on

# On crée la règle
RewriteRule ^([a-f0-9]*)/([a-zA-Z0-9-]*)$ download.php?id_file=$1 [L,E]



Il te suffira donc de créer un fichier "download.php" à la racine de ton sous domaine (download dans ce cas-ci).
Ce script reprend l'id du fichier client (62efee001b370b0ca3c541af02bb647c pour le client 1) et va vérifier dans une table à quel fichier est lié cet id fichier client.

"62efee001b370b0ca3c541af02bb647c" => "/home/myfiles/softs/fullsetup.exe"



Ensuite ton script lit le contenu du fichier "/home/myfiles/softs/fullsetup.exe" en BINARY, et le renvoie en sortie de script (avec les header convenables).

Tu me suis ? :)

Link to comment
Share on other sites

Tu me suis ? :)


Où ça ? Je plaisante bien sur. Bien sur que je te suis. De fait, ça permet de gérer la notion de limitation du nombre de download (par le biais du download.php). Mais je dois quand même passer par une tâche planifiée pour la limitation dans le temps ? Invalider la possibilité de téléchargement après N-jours suivant l'acte d'achat. Tu confirmes ?

Amicalement,
Max
Link to comment
Share on other sites

Non pas besoin de tache cron pour ça :)

Lorsque le client commande et paye ton programme, tu insère un enregistrement dans ta table "files".

"62efee001b370b0ca3c541af02bb647c" => "/home/myfiles/softs/fullsetup.exe"



Et à ce moment là, tu insères aussi le timestamp, ça donne donc :

id_file = "62efee001b370b0ca3c541af02bb647c"
path_file = "/home/myfiles/softs/fullsetup.exe"
time_add = 2131412312



Ensuite dans ton "download.php" tu peux très facilement vérifier si le fichier à été acheté/ajouté il y a X jours.

Link to comment
Share on other sites

Pour ne pas qu'il y ai de faille de sécurité, il suffit que tu lies ça avec le cookie de PrestaShop ;) Et là tu pourras donc vérifier si l'utilisateur est bien le client qui à acheté le programme :)


Effectivement, sauf si l'utilisateur a vidé son cache de navigateur entre temps. Et du coup, sans être reconnecté au site, s'il passe par un lien dans un email, ça risque de ne pas marcher. Mais bon, je vais regarder tout ça de très très près dans les semaines à venir et je me ferais un plaisir de faire un retour d'expérience là-dessus !

Thank you so much man !

Amicalement,
Max
Link to comment
Share on other sites

Dans ce cas, tu lui demandes un login/pass :) Ce que font la plupart des vendeurs de logiciels sur le net.


Dans quel sens ? avec un .htaccess ? Ou avec une petite interface de login en PHP ?

Mais bon, là c'est moins agréable pour l'utilisateur. Cela le force à retrouver ses codes d'accès s'il ne les a pas de tête. Et je vais surtout essayer de faire quelque chose de simple pour éviter le support technique sur des questions de la sorte. Je suis tout seul, et comme je programme en parallèle, on sait tous que le support, qu'il soit commercial ou technique, est un poste qui demande énormément de temps et d'énergie.

Amicalement,
Max
Link to comment
Share on other sites

Bonjour à tous les deux,

Tu as raison Max Prod, pour le coup Pierre-Yves à vu juste sur ce coup là !
Cet un plaisir pour moi de tomber sur des gens comme vous, là, j’avoue que je commence à lire en diagonal. Trop d’information, tue l’information !

Vous n’êtes pas parents éloigné de LUCKY LUCK, qui tire plus vite que son ombre, (le clavier, pour vous) ?
Je commence sérieusement à regretter d’avoir arrêté mes études, car je dois sans cesse me relire afin que mes messages soit compréhensible pour vous.

Appelons un Chat, UN CHAT ! J’ai comme l’impression de voir Garfield et Gros Minet, deux chats exceptionnels et vraiment très doués qui sont en train de tchater sur le net. ;-P

Max Prod, je le dis publiquement je suis prêts à t’épouser et nous prenons Pierre-Yves pour témoin ?!! :lol:

Tout ça pour vous dire que je vous adore les gars !
Max Prod, tu me fais penser à une vielle connaissance, quelqu’un comme toi de très passionné et qui sais faire preuve d’un très grand professionnalisme.

Pierre-Yves, je n’avais jamais eu l’occasion de te croiser sur se forum, mais je tiens à te dire que t’avais réussi à m’impressionner sur la requête SexShop pour le site Fep que tu as réalisé à l’époque. Aujourd’hui ce n’est plus le cas car Google a changé son algorithmique et tout, et tout… et je pense que tu ne dois plus travailler sur ce site à l’heure actuelle. Donc encore une fois Chapeau bas l’ami !

Vous êtes vraiment trop fort les gars !

Dans tous les cas merci beaucoup à vous deux, c’est un sujet que j’ai booké dans mes favoris ! Que j’aurais plaisir à relire Tête reposé !

Cordialement,
Melki-tsedeq

Link to comment
Share on other sites

Max Prod, je le dis publiquement je suis prêts à t’épouser et nous prenons Pierre-Yves pour témoin ?!! :lol:


Une demande en mariage :red: C'est pas tout les jours que ça arrive, donc adjugé, vendu :) Pierre-Yves, tu est témoin de la déclaration ici présente :lol:

Tout ça pour vous dire que je vous adore les gars !
Max Prod, tu me fais penser à une vielle connaissance, quelqu’un comme toi de très passionné et qui sais faire preuve d’un très grand professionnalisme.


Les compliments sont toujours agréable à lire, merci.

Bises 'n Peace,
Max
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...