{"id":7784,"date":"2022-08-31T09:23:21","date_gmt":"2022-08-31T09:23:21","guid":{"rendered":"https:\/\/www.directimpactsolutions.com\/?p=7784"},"modified":"2026-04-22T18:14:02","modified_gmt":"2026-04-22T18:14:02","slug":"taches-laravel-travailleur","status":"publish","type":"post","link":"https:\/\/www.directimpactsolutions.com\/fr\/taches-laravel-travailleur\/","title":{"rendered":"Mise en file d\u2019attente des t\u00e2ches Laravel pour qu\u2019elles soient trait\u00e9es par un travailleur"},"content":{"rendered":"<div class=\"toc\">\n    <p>Table des mati\u00e8res<\/p>\n    <ol>\n        <li><a rel=\"noopener\" target=\"_blank\" href=\"#intro\">Intro<\/a><\/li>\n        <li><a rel=\"noopener\" target=\"_blank\" href=\"#improved_ux\">Am\u00e9lioration de l\u2019exp\u00e9rience utilisateur (UX) <\/a><\/li>\n        <li><a rel=\"noopener\" target=\"_blank\" href=\"#scalability\">\u00c9volutivit\u00e9 <\/a><\/li>\n        <li><a rel=\"noopener\" target=\"_blank\" href=\"#flexibility\">Flexibilit\u00e9 <\/a><\/li>\n        <li><a rel=\"noopener\" target=\"_blank\" href=\"#power\">Puissance <\/a><\/li>\n        <li><a rel=\"noopener\" target=\"_blank\" href=\"#gotchas\">Gotchas <\/a><\/li>\n        <li><a rel=\"noopener\" target=\"_blank\" href=\"#conclusion\">Conclusion <\/a><\/li>\n    <\/ol>\n<\/div><h2 class=\"wp-block-heading\" id=\"intro\" style=\"font-style:normal;font-weight:400\">Qu\u2019est-ce qu\u2019un emploi dans Laravel ?<\/h2><p>Il y a beaucoup de choses \u00e0 d\u00e9cortiquer ici.<\/p><p>Tout d\u2019abord, les jobs sont diverses t\u00e2ches que nous faisons ex\u00e9cuter par Laravel. Plus pr\u00e9cis\u00e9ment, ce sont des choses \u00e0 faire en arri\u00e8re-plan, donc elles sont souvent utilis\u00e9es pour quelque chose qui pourrait prendre un certain temps.<\/p><p>En tant que d\u00e9veloppeurs, nous pouvons cr\u00e9er des t\u00e2ches personnalis\u00e9es pour \u00e0 peu pr\u00e8s tout ce que nous voulons, et nous le ferons couramment pour les t\u00e2ches \u00e0 forte intensit\u00e9 d\u2019E\/S comme l\u2019importation\/exportation de grands ensembles de donn\u00e9es. Il convient \u00e9galement de noter que certaines autres parties de Laravel couramment utilis\u00e9es peuvent \u00eatre assez facilement transform\u00e9es en t\u00e2ches, comme les notifications. Les notifications sont de courts messages que Laravel peut envoyer. Nous les utilisons couramment pour l\u2019envoi d\u2019emails et de messages SMS.<\/p><p>Laravel nous pr\u00e9sente des files d\u2019attente que nous pouvons utiliser afin d\u2019aligner une s\u00e9rie de t\u00e2ches. En faisant cela, ils seront trait\u00e9s de mani\u00e8re s\u00e9quentielle. Le m\u00e9canisme pour faire cela est assez flexible pour vous laisser d\u00e9cider de la technologie utilis\u00e9e pour stocker vos files d\u2019attente (DB\/Redis\/Beanstalkd\/SQS), et peut facilement \u00eatre mis en place dans un environnement de dev \u00e9galement.<\/p><p>Le travailleur est un processus s\u00e9par\u00e9 qui est d\u00e9di\u00e9 au traitement des travaux dans votre file d\u2019attente. L\u2019ajout d\u2019un processus de travailleur permet de relier tous ces \u00e9l\u00e9ments et d\u2019am\u00e9liorer l\u2019interface utilisateur, l\u2019\u00e9volutivit\u00e9 et la flexibilit\u00e9, tout en conservant un code standardis\u00e9 et \u00e9l\u00e9gant \u00e0 lire.<\/p><h2 class=\"wp-block-heading\" id=\"improved_ux\" style=\"font-style:normal;font-weight:400\">Am\u00e9lioration de l\u2019exp\u00e9rience utilisateur (UX)<\/h2><p>Les am\u00e9liorations de l\u2019exp\u00e9rience utilisateur sont r\u00e9alis\u00e9es gr\u00e2ce \u00e0 la s\u00e9paration de ces t\u00e2ches en travaux qui sont ex\u00e9cut\u00e9s dans un processus diff\u00e9rent. Parfois, les t\u00e2ches ex\u00e9cut\u00e9es sont n\u00e9cessaires pour que le syst\u00e8me fonctionne, mais ne doivent pas n\u00e9cessairement \u00eatre ex\u00e9cut\u00e9es instantan\u00e9ment. <\/p><p>Un bon exemple de ceci serait un site qui est accessible au public. Disons que notre site est un site que tout le monde peut visiter et remplir un formulaire d\u2019inscription. Supposons \u00e9galement que tous les administrateurs du site re\u00e7oivent une notification par e-mail chaque fois qu\u2019une nouvelle personne s\u2019inscrit sur le site. S\u2019il s\u2019agit d\u2019un site populaire, il est probable qu\u2019il y ait plusieurs administrateurs. <\/p><p>Il ne semble pas normal qu\u2019un utilisateur remplisse le formulaire d\u2019inscription, appuie sur suivant, puis doive s\u2019asseoir et attendre que le site envoie tous les e-mails avant de le rediriger vers la page suivante, n\u2019est-ce pas ? C\u2019est un parfait exemple de cas o\u00f9 nous pouvons mettre des t\u00e2ches en file d\u2019attente pour que le travailleur s\u2019en occupe, et envoyer notre utilisateur sur son chemin.<\/p><p class=\"has-text-align-left\">Essentiellement, nous prenons ce qui \u00e9tait un processus tr\u00e8s lin\u00e9aire, nous le d\u00e9composons en parties, nous cat\u00e9gorisons ces parties en fonction <em>du moment<\/em> o\u00f9 <em>elles doivent \u00eatre ex\u00e9cut\u00e9es<\/em>, et nous leur permettons d\u2019\u00eatre ex\u00e9cut\u00e9es en parall\u00e8le.<br\/><\/p><figure class=\"wp-block-image size-full is-resized is-style-default\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/worker-vs-nonworker-diagram-1.jpg\" alt=\"Comparaison des flux de travail entre travailleurs et non-travailleurs\" class=\"wp-image-7648\" width=\"623\" height=\"505\" srcset=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/worker-vs-nonworker-diagram-1.jpg 828w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/worker-vs-nonworker-diagram-1-300x243.jpg 300w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/worker-vs-nonworker-diagram-1-768x622.jpg 768w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/worker-vs-nonworker-diagram-1-480x389.jpg 480w\" sizes=\"auto, (max-width: 623px) 100vw, 623px\" \/><figcaption class=\"wp-element-caption\">Comparaison des flux de travail entre travailleurs et non-travailleurs<\/figcaption><\/figure><h3 class=\"wp-block-heading has-ast-global-color-2-color has-text-color\" id=\"scalability\">\u00c9volutivit\u00e9<\/h3><p>Puisque nous pouvons ex\u00e9cuter les travailleurs en tant que processus distincts, il devient possible de surveiller leurs performances individuelles et de les faire \u00e9voluer si n\u00e9cessaire. Il est possible de configurer plusieurs travailleurs et de les r\u00e9partir sur plusieurs serveurs de votre groupe pour optimiser les performances.<\/p><h3 class=\"wp-block-heading has-ast-global-color-2-color has-text-color\" id=\"flexibility\">Flexibilit\u00e9<\/h3><p>Nous disposons d\u2019une grande souplesse lorsque nous utilisons les t\u00e2ches, les files d\u2019attente et les travailleurs comme ils ont \u00e9t\u00e9 con\u00e7us. Les t\u00e2ches peuvent \u00eatre configur\u00e9es de mani\u00e8re \u00e0 ce qu\u2019elles soient tent\u00e9es plusieurs fois en cas d\u2019\u00e9chec. Cela peut \u00eatre sp\u00e9cifi\u00e9 globalement sur notre processus de travail, ou m\u00eame sur une base par travail.<\/p><p>Les t\u00e2ches sont \u00e9galement capables d\u2019utiliser un intergiciel. Ceci est particuli\u00e8rement utile lorsque vous avez plusieurs t\u00e2ches qui doivent se comporter de mani\u00e8re similaire. Nous avons d\u00e9j\u00e0 tir\u00e9 parti de l\u2019utilisation d\u2019un intergiciel bas\u00e9 sur les t\u00e2ches pour nous assurer que les SMS ne sont envoy\u00e9s qu\u2019\u00e0 certaines heures de la journ\u00e9e. Il est possible de configurer l\u2019intergiciel pour qu\u2019il v\u00e9rifie l\u2019heure actuelle et reprogramme la t\u00e2che \u00e0 une heure ult\u00e9rieure si elle ne correspond pas \u00e0 certains crit\u00e8res. Maintenant que nous avons d\u00e9fini cet intergiciel, il ne nous reste plus qu\u2019\u00e0 sp\u00e9cifier si nous voulons qu\u2019il soit utilis\u00e9 sur une base par t\u00e2che\/notification.<\/p><h3 class=\"wp-block-heading has-ast-global-color-2-color has-text-color\" id=\"power\">Puissance<\/h3><p>M\u00eame si le syst\u00e8me de Laravel est robuste, il est assez simple \u00e0 mettre en place. La fa\u00e7on dont vous configurez votre site pour utiliser les jobs\/queues\/workers d\u00e9pendra des diff\u00e9rentes technologies que vous utilisez. De nombreux d\u00e9tails pertinents peuvent \u00eatre trouv\u00e9s dans la <a href=\"https:\/\/laravel.com\/docs\/9.x\/queues\" target=\"_blank\" rel=\"noreferrer noopener\">documentation officielle<\/a>. Quelles que soient les technologies que vous choisirez, vous disposerez d\u2019une grande puissance au bout des doigts. Vous pourrez classer les t\u00e2ches par ordre de priorit\u00e9 et les planifier, elles seront bien document\u00e9es et organis\u00e9es, et vous pourrez m\u00eame consigner les t\u00e2ches qui ont \u00e9chou\u00e9. Si vous vous trouvez dans une situation o\u00f9 des t\u00e2ches ont \u00e9chou\u00e9 et que vous voulez y rem\u00e9dier, vous avez m\u00eame la possibilit\u00e9 de les r\u00e9essayer !<\/p><h3 class=\"wp-block-heading has-ast-global-color-2-color has-text-color\" id=\"gotchas\">Emb\u00fbches<\/h3><p>Il n\u2019y a pas beaucoup d\u2019inconv\u00e9nients \u00e0 l\u2019utilisation de jobs\/queues\/workers, mais il y a quelques points qu\u2019il est important de souligner. Tout d\u2019abord, lorsque vous configurez votre installation, vous devez sp\u00e9cifier les pilotes que vous utiliserez pour \u00e9tablir une connexion avec votre technologie de mise en file d\u2019attente. Certaines fonctionnalit\u00e9s de traitement des t\u00e2ches sont sp\u00e9cifiques \u00e0 la technologie. Par exemple, l\u2019option <code>block_for <\/code>de configuration block_for n\u2019est disponible que pour les files d\u2019attente redis \u00e0 l\u2019heure o\u00f9 j\u2019\u00e9cris ces lignes.<\/p><p>L\u2019autre remarque que j\u2019aimerais ajouter est que, comme le processus de travail est g\u00e9n\u00e9ralement lanc\u00e9 par une commande telle que <code>php artisan queue:work<\/code>, vous devrez vous assurer de red\u00e9marrer ce processus apr\u00e8s avoir apport\u00e9 des modifications au code de base.<\/p><h3 class=\"wp-block-heading has-ast-global-color-2-color has-text-color\" id=\"conclusion\">Conclusion<\/h3><p>L\u2019utilisation d\u2019un processus distinct pour g\u00e9rer vos t\u00e2ches en file d\u2019attente pr\u00e9sente de nombreux avantages, et ces fonctionnalit\u00e9s sont toutes int\u00e9gr\u00e9es au framework Laravel. M\u00eame si vous n\u2019utilisez cette fonctionnalit\u00e9 que pour vos notifications, elle en vaut la peine. Et pour couronner le tout, du point de vue du codeur, il y a tr\u00e8s peu de changements dans le code que vous \u00e9crivez pour envoyer vos notifications. Utilisez-vous d\u00e9j\u00e0 les travailleurs? Si non, qu\u2019attendez-vous pour le faire ?<\/p>","protected":false},"excerpt":{"rendered":"<p>Le travailleur est un processus s\u00e9par\u00e9 qui est d\u00e9di\u00e9 au traitement des travaux dans votre file d\u2019attente. L\u2019ajout d\u2019un processus de travailleur permet de relier tous ces \u00e9l\u00e9ments et d\u2019am\u00e9liorer l\u2019interface utilisateur, l\u2019\u00e9volutivit\u00e9 et la flexibilit\u00e9, tout en conservant un code standardis\u00e9 et \u00e9l\u00e9gant \u00e0 lire.<\/p>\n","protected":false},"author":7,"featured_media":7761,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","footnotes":""},"categories":[37],"tags":[157,154,155,156],"class_list":["post-7784","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web","tag-jobs-fr","tag-laravel-fr","tag-queue-fr","tag-travailleur"],"uagb_featured_image_src":{"full":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/QueueingJobsLaravel_BlogArticle_1300x750.png",1300,750,false],"thumbnail":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/QueueingJobsLaravel_BlogArticle_1300x750-150x150.png",150,150,true],"medium":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/QueueingJobsLaravel_BlogArticle_1300x750-300x173.png",300,173,true],"medium_large":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/QueueingJobsLaravel_BlogArticle_1300x750-768x443.png",768,443,true],"large":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/QueueingJobsLaravel_BlogArticle_1300x750-1024x591.png",1024,591,true],"1536x1536":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/QueueingJobsLaravel_BlogArticle_1300x750.png",1300,750,false],"2048x2048":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/QueueingJobsLaravel_BlogArticle_1300x750.png",1300,750,false],"woocommerce_thumbnail":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/QueueingJobsLaravel_BlogArticle_1300x750-300x300.png",300,300,true],"woocommerce_single":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/QueueingJobsLaravel_BlogArticle_1300x750.png",600,346,false],"woocommerce_gallery_thumbnail":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2022\/08\/QueueingJobsLaravel_BlogArticle_1300x750-100x100.png",100,100,true]},"uagb_author_info":{"display_name":"Matt Leering","author_link":"https:\/\/www.directimpactsolutions.com\/fr\/author\/matt-leering\/"},"uagb_comment_info":0,"uagb_excerpt":"Le travailleur est un processus s\u00e9par\u00e9 qui est d\u00e9di\u00e9 au traitement des travaux dans votre file d\u2019attente. L\u2019ajout d\u2019un processus de travailleur permet de relier tous ces \u00e9l\u00e9ments et d\u2019am\u00e9liorer l\u2019interface utilisateur, l\u2019\u00e9volutivit\u00e9 et la flexibilit\u00e9, tout en conservant un code standardis\u00e9 et \u00e9l\u00e9gant \u00e0 lire.","_links":{"self":[{"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/posts\/7784","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/comments?post=7784"}],"version-history":[{"count":9,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/posts\/7784\/revisions"}],"predecessor-version":[{"id":21099,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/posts\/7784\/revisions\/21099"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/media\/7761"}],"wp:attachment":[{"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/media?parent=7784"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/categories?post=7784"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/tags?post=7784"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}