Laravel 5

Hébergement Web PRO OVH + Queue Asynchrones

  • Avatar de LeoDorbes
    Membre depuis :
    28/06/2017
    Messages :
    1

    Bonjour,

    Je développe actuellement une application avec Laravel qui va avoir besoin d'envoyer quelques mails (que je range grossièrement dans deux grandes catégories) :
    -Mails automatiques (Gérés par une Cron table qui s'execute 1 fois par jour).
    -Mails déclenchés (qui sont envoyés automatiquements après certaines actions : Inscription utilisateur, première inscription à une offre, modification d'un profil back-end, etc...)

    Je ne suis pas administrateur reseau du tout et jusqu'à maintenant l'offre OVH pro (mutualisée mais avec accès SSH) m'a toujours suffit pour mes sites en Laravel.

    Le soucis, c'est que l'envoi de plusieurs mails de facon synchrone peut prendre du temps et l'utilisateur ne recoit pas la vue tant que tout les mails n'ont pas été executé.

    Laravel propose la solution des Jobs et des Queues pour ce genre de problèmes et j'ai déjà du m'en servir en local ca fonctionne très bien. Ce que j'ai compris cependant, c'est qu'il est fortement recommandé d'utiliser un outil comme supervisor si on souhaite se servir des queues avec le driver database.

    Or il m'est impossible d'installer supervisor sur l'offre OVH web pro (le SSH ne me donne aucun droits admin et la commande apt-get n'est donc pas utilisable).

    Existe t'il une alternative qui me permette de rester chez OVH en offre web pro sans devoir commander un serveur dédié et installer toutes les dependances d'un site web (Nginx, PHP, Composer, Cron, et j'en passe) dessus ? (ce n'est pas mon metier, et ca implique une maintenance vraiment lourde).

    Merci d'avance de vos réponses,

    Cordialement.

  • Avatar de caouecs
    Membre depuis :
    12/04/2013
    Messages :
    128

    Bonjour,
    tu peux essayer avec le cron et lancer régulièrement un queue:listen, sinon chez OVH, j'utilise les VPS ( https://www.ovh.com/fr/vps/ ). Tu as accès à toute la machine avec des distributions pré-configurées.

  • Avatar de F.M.
    Membre depuis :
    10/07/2017
    Messages :
    26

    Salut,

    Tu gères ta propre file d'attente c'est pas sorcier.

    1) Tu crées une table Mysql 'queue' (ou du redis ou ce que tu veux en fait) avec un champ 'status' à 0 par défaut, 1 quand traité.
    2) Au lieu d'envoyer tes mails transactionnels tu enregistres une entrée dans ta table 'queue' avec tout ce qu'il faut (mail destinaire, sujet, corps, etc...)
    3) Tu crées une commande artisan qui boucle sur ta table 'queue' pour trouver les jobs en attente (status == 0), qui envoie le mail (tu peux utiliser une plateforme mail type sendgrid) et marque le job comme traité (status = 1)
    4) Tu mets en place un CRON avec ta commande artisan, toutes les 10 minutes par exemple ou en fonction de tes besoins en réactivité

Vous ne pouvez pas répondre à ce sujet.