Download the PHP package andydefer/laravel-task without Composer

On this page you can find all versions of the php package andydefer/laravel-task. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package laravel-task

Laravel Task

Un moteur de tâches persistantes pour Laravel. Planification dynamique, exécution récurrente, état, retry, pause, reprise - avec un simple cron.

PHP Version Laravel Version


Table des matières

  1. Installation
  2. Pourquoi Laravel Task ?
  3. Architecture et concepts clés
  4. Créer une tâche unique
  5. Créer une tâche récurrente
  6. Le noyau de directives (DirectiveKernel)
  7. Exécuter les tâches
  8. Surveillance continue
  9. Exécution parallèle
  10. Gestion des tâches
  11. Directive tasks:list — Lister les tâches
  12. Directive tasks:search — Rechercher une tâche par alias
  13. Circuit Breaker — Protéger les appels critiques
  14. Mode test et fixtures
  15. Cas d'usage concrets
  16. Intégration avec les cron jobs
  17. Bonnes pratiques

Installation

Prérequis : PHP 8.2+ | Laravel 12.x, 13.x, 14.x ou 15.x


Pourquoi Laravel Task ?

Le problème : Vous devez envoyer un email 30 minutes après chaque inscription. Avec Laravel Queue, il vous faut un worker permanent, Supervisor, et généralement un VPS. Sur un hébergement mutualisé, c'est impossible.

La solution : Laravel Task. Des tâches persistantes avec un cycle de vie complet, qui fonctionnent avec un simple cron.

Comparatif rapide

Besoin Scheduler Queue Laravel Task
Tâche "dans 5 minutes" ❌ ✅ ✅
Tâche récurrente avec date de fin ❌ ❌ ✅
Pause / Reprise ❌ ❌ ✅
Retry automatique ❌ ✅ ✅
État et historique ❌ ❌ ✅
Exécution parallèle ❌ ✅ ✅
Fonctionne sur hébergement SHARED ✅ ❌ ✅
Circuit breaker intégré ❌ ❌ ✅

Architecture et concepts clés

Le noyau (DirectiveKernel)

Le package repose sur un noyau de directives (DirectiveKernel) qui orchestre toute l'exécution. Il agit comme un micro-framework de commandes intégré à Laravel.

Fonctionnalités clés :

Les directives

Le package fournit cinq directives principales :

Directive Description Utilisation
tasks:process Exécution unique en lot ./bin/task tasks:process
tasks:watch Surveillance continue ./bin/task tasks:watch
tasks:list Liste les tâches persistées ./bin/task tasks:list
tasks:search Recherche par alias ./bin/task tasks:search
fixture:register-tasks Création de tâches de test ./bin/task fixture:register-tasks

Filtrage par FQCN (Arguments variadiques)

Les directives tasks:process et tasks:watch supportent les arguments variadiques pour filtrer les tâches par leur FQCN (Fully Qualified Class Name).

Utilisation des points (.) au lieu des backslashes () :

Dans le code :

Les services de tâches

Le package expose deux services principaux qui utilisent des records pour la configuration :


Créer une tâche unique

1. Créer la classe

2. Enregistrer la tâche via le service


Créer une tâche récurrente

1. Créer la classe

2. Enregistrer la tâche


Le noyau de directives (DirectiveKernel)

Le DirectiveKernel est le cœur de l'exécution. Il permet de :

1. Exécuter une directive programmatiquement

2. Utiliser le contexte partagé


Exécuter les tâches

Une seule fois (tasks:process)


Surveillance continue (tasks:watch)

La directive tasks:watch exécute tasks:process en boucle avec un intervalle configurable.

Arguments

Argument Description Défaut
interval Intervalle entre les cycles (minimum 2s) 60
duration Durée totale d'exécution en secondes Illimité
limit Nombre max de tâches par cycle 100
parallel Nombre de workers parallèles 1
fqcnNames* Liste des FQCN à filtrer (variadique) Aucun

Astuce : Utilisez _ (underscore) pour ignorer un argument positionnel et utiliser sa valeur par défaut.


Exécution parallèle

Le package supporte l'exécution parallèle des tâches via l'option --parallel.

Architecture


Gestion des tâches

États des tâches uniques

États des tâches récurrentes

API de gestion


Directive tasks:list — Lister les tâches

La directive tasks:list affiche les tâches uniques et récurrentes persistées dans un tableau, avec filtres par type, statut et FQCN.

Signature

Argument Type Défaut Description
limit int 50 Nombre maximum de tâches par statut
fqcns array<string> [] Filtre par FQCN (notation pointée)
kinds array<string> [unique,recurring] Types à afficher
unique_statuses array<string> Tous Statuts de tâches uniques
recurring_statuses array<string> Tous Statuts de tâches récurrentes

Alias

Ordre des arguments positionnels

Les variadics sont positionnels. Pour ignorer un variadic, passer [].

Position Argument
1 limit
2 fqcns
3 kinds
4 unique_statuses
5 recurring_statuses

Utilisation

Colonnes de sortie

Colonne Source unique Source récurrente
Kind unique recurring
Alias alias alias
FQCN fqcn fqcn
Status status status
Next / Last run scheduled_at last_run_at sinon start_at
Attempts attempts failed_attempts

Comportement

Exemple de sortie


Directive tasks:search — Rechercher une tâche par alias

La directive tasks:search permet de retrouver une ou plusieurs tâches par leur alias. Elle cherche d'abord dans les tâches uniques, puis dans les tâches récurrentes.

Signature

Argument Type Obligatoire Description
aliases array<string> ✅ Liste d'alias à rechercher

Les alias sont fournis sous forme de variadic : [alias1, alias2, ...].

Alias

Utilisation

Ordre de recherche

Priorité Service Condition
1 UniqueTaskServiceInterface::find() Si retour non-null, l'alias est considéré trouvé
2 RecurringTaskServiceInterface::find() Consulté uniquement si le précédent retourne null

Un alias n'est jamais recherché deux fois : la première correspondance gagne.

Comportement

Cas ExitCode Sortie
Toutes les alias trouvées SUCCESS Tableau des tâches
Certaines alias non trouvées FAILURE Tableau + avertissements
Aucune alias trouvée FAILURE Erreur + avertissements
Aucun alias fourni (exception kernel) At least one alias is required.

Colonnes de sortie

Colonne Source unique Source récurrente
Kind unique recurring
Alias alias alias
FQCN fqcn fqcn
Status status status
Next / Last run scheduled_at last_run_at sinon start_at
Attempts attempts failed_attempts

Exemple de sortie

Points d'attention


Circuit Breaker — Protéger les appels critiques

Le package embarque un circuit breaker prêt à l'emploi, basé sur le cache Laravel. Il protège n'importe quelle opération dont l'échec répété est coûteux : appel HTTP, accès base de données, lecture de fichier partagé, requête sur un service interne.

Principe

Utilisation dans une tâche

Ajoute le trait WithCircuitBreaker à ta tâche :

Opt-in : les tâches qui n'utilisent pas le trait ne sont pas affectées. Aucune signature, aucun constructeur, aucun contrat d'interface n'est modifié.

Utilisation directe

Choix de la clé

La clé identifie la ressource protégée, pas la tâche. Deux appels avec la même clé partagent le même breaker.

Clé suggérée Ressource protégée
firebase.fcm API Firebase Cloud Messaging
webpush.mozilla Service Push de Mozilla
db.replica-eu Réplique DB Europe
storage.s3 Bucket S3
webhook.partner-x Webhook partenaire X
mail.smtp Serveur SMTP

Gestion des erreurs

Comportement en cas d'échec

API

Méthode Description
CircuitBreaker::create(...) Construit un breaker (seuils clampés à ≥ 1)
execute(callable $callback) Exécute protégé par le breaker
state(): CircuitBreakerState État courant (CLOSED, OPEN, HALF_OPEN)
recordSuccess() Enregistre un succès manuellement
recordFailure() Enregistre un échec manuellement
reset() Force l'état à CLOSED et efface les compteurs

Configuration

Aucune configuration obligatoire. Le breaker utilise le store de cache par défaut. Pour cibler un store spécifique :

Points d'attention


Cas d'usage concrets

1. SaaS - Abonnements et facturation

2. E-commerce - Paniers abandonnés

3. Intégrations API - Webhooks avec retry et circuit breaker

4. Maintenance - Nettoyage et backups

5. Workflow - Orchestration en plusieurs étapes

6. Campaigns marketing - Newsletters temporaires


Intégration avec les cron jobs

Configuration de base


Bonnes pratiques

✅ Injection de services

✅ Utiliser des Value Objects pour les dates

✅ Structure des payloads avec StrictDataObject

✅ Utiliser des limites

✅ Protéger les appels critiques avec un circuit breaker

Une clé = une ressource protégée. Ne pas mélanger plusieurs ressources sous la même clé. Ne pas réutiliser la même clé entre deux services distincts.


Licence

MIT © Andy Defer


All versions of laravel-task with dependencies

PHP Build Version
Package Version
Requires php Version >=8.1
laravel/framework Version ^12.0|^13.0|^14.0|^15.0
ramsey/uuid Version ^4.7
andydefer/laravel-logger Version ^3.10.1
andydefer/laravel-repository Version ^2.17.37
andydefer/laravel-directive Version ^3.67.18
zaber-dev/laravel-lock Version ^1.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package andydefer/laravel-task contains the following files

Loading the files please wait ...