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 système de tâches asynchrones et récurrentes pour Laravel, basé sur des fichiers JSONL.

PHP Version Laravel Version


Table des matières

  1. Introduction
  2. Installation
  3. Configuration
  4. Concepts fondamentaux
  5. Créer votre première tâche
  6. Le payload : passer des paramètres
  7. Types de tâches
  8. Période de grâce (Grace Period)
  9. Traitement par lots
  10. Traitement des erreurs et réessais
  11. Logging structuré
  12. Tests
  13. Architecture technique
  14. Référence technique détaillée
  15. Licence

Introduction

Le problème

Laravel propose des solutions pour les tâches asynchrones, mais chacune a ses limites :

Solution Problème
Queues Nécessitent Redis/Beanstalkd/Database, configuration lourde
Task Scheduling Exécution via cron, pas de gestion des échecs intégrée
Jobs Lourds, difficilement testables unitairement

La solution : Laravel Task

Laravel Task est un système de tâches asynchrones et récurrentes basé sur des fichiers JSONL (JSON Lines).

Problème Solution Laravel Task
Dépendance à Redis/Beanstalkd Stockage JSONL - pas de base de données
Configuration complexe Zéro configuration, prêt à l'emploi
Tests difficiles Testable unitairement (pas de queue mock)
Pas de récurrence native delay_seconds pour les tâches récurrentes
Pas de gestion des échecs Retry automatique avec max_attempts
Logs non structurés Logging via laravel-logger

Installation

Le package s'enregistre automatiquement via Laravel.

Publication de la configuration (optionnel)


Configuration

Variables d'environnement


Concepts fondamentaux

Une tâche = un fichier JSONL

Dossier Format Cycle de vie
pending/ JSONL Création → Exécution → Archivage
recurring/ JSONL Création → Exécution → Mise à jour (append)
completed/ JSONL Archive historique pour audit
grace_period/ JSON Traces des exécutions tardives

Structure d'une tâche (TaskRecord)

Structure d'une tâche récurrente (RecurringTaskRecord)

Value Objects

Le package utilise des Value Objects pour un typage fort et sécurisé :

Value Object Description Validation
TaskIdVO Identifiant unique de tâche Format UUID v4
TaskSignatureVO Signature lisible de la tâche Minuscules avec traits d'union
CounterVO Compteur (attempts, max_attempts, etc.) Non négatif, avec incrémentation
UnixTimestampVO Timestamp Unix Comparaisons isAfter()/isBefore()
Iso8601DateTimeVO Date ISO 8601 Format Y-m-d\TH:i:sP
TaskDirectoryVO Chemin de dossier Construction sécurisée des chemins

Créer votre première tâche

1. Créer la classe de la tâche

2. Enregistrer la tâche

Vous pouvez enregistrer une tâche depuis n'importe où (commande, contrôleur, événement). La façon la plus simple est d'utiliser le service unifié TaskService :

3. Exécuter le traitement par lots

4. Automatiser le traitement (Cron)

Ajoutez ceci à votre crontab pour exécuter toutes les minutes :


Le payload : passer des paramètres

Qu'est-ce qu'un payload ?

Le payload est une structure typée qui transporte les paramètres de la tâche. Il se compose de :

Accéder aux paramètres dans la tâche

Structure imbriquée (optionnel)

Le StrictDataObject peut contenir des données imbriquées :


Types de tâches

Tâche unique

S'exécute une seule fois, puis est archivée dans completed/.

Caractéristiques :

Tâche récurrente

S'exécute à intervalles réguliers. Une seule instance par signature.

Caractéristiques :


Période de grâce (Grace Period)

Qu'est-ce que c'est ?

La période de grâce permet d'exécuter une tâche unique même si elle a dépassé sa date de fin (end_at), dans une limite configurable (par défaut 24 heures).

Pourquoi ?

Une tâche peut ne pas s'exécuter exactement à l'heure prévue :

Sans période de grâce, ces tâches seraient définitivement perdues.

Comportement par défaut

Type de tâche Période de grâce
Unique (delay_seconds->value === 0) ✅ Activée (24h)
Récurrente (delay_seconds->value > 0) ❌ Désactivée
Avec enforce_exact_schedule = true ❌ Désactivée

Configuration

Exemple d'utilisation


Traitement par lots (Batch Processing)

Directive CLI

Options de la directive

Option Description Défaut
--limit Nombre maximum de tâches à traiter Config batch.limit
--unique-only Traite uniquement les tâches uniques false
--recurring-only Traite uniquement les tâches récurrentes false
--verbose Affiche les détails des erreurs false

Utilisation programmatique avec TaskService

Ordre de traitement

L'ordre de traitement est configurable :


Traitement des erreurs et réessais

Configuration des tentatives

Comportement en cas d'échec

Types d'erreur (ErrorType)

L'enum ErrorType catégorise les erreurs :

Type Description Terminal
INVALID_TASK_CLASS Classe de tâche invalide
TASK_VALIDATION_FAILED Validation échouée (état, expiration, tentatives)
TASK_EXECUTION_FAILED Erreur pendant l'exécution
TASK_EXPIRED Tâche expirée
MAX_ATTEMPTS_REACHED Nombre max de tentatives atteint
GRACE_PERIOD_EXPIRED Période de grâce expirée
RECURRING_NOT_READY Tâche récurrente pas prête
STORAGE_ERROR Erreur de stockage

Tâche expirée

Si end_at est dépassé et qu'il n'y a pas de période de grâce, la tâche est immédiatement archivée sans nouvelle tentative.


Logging structuré

Logs automatiques

Le package logue automatiquement via laravel-logger :

Événement Description
task_started Début de l'exécution
task_completed Exécution réussie
task_failed Exécution échouée
task_output Messages info() et error()
batch_started Début du traitement par lots
batch_completed Fin du traitement par lots
task_executed_during_grace_period Exécution pendant période de grâce

Logs personnalisés

Consulter les logs


Tests

Tester une tâche


Architecture technique

Vue d'ensemble

Le package est organisé autour d'une architecture orientée services avec une séparation claire des responsabilités. Le point d'entrée principal est le service unifié TaskService qui agit comme une façade (design pattern Facade) et délègue à six services spécialisés :

Le service unifié TaskService

TaskService est le point d'entrée unique recommandé pour tous les consommateurs du package. Il est conçu selon le pattern Facade et ne contient aucune logique métier - il se contente de déléguer chaque appel au service spécialisé correspondant.

Pourquoi utiliser TaskService ?

| Sans TaskService (injection multiple) | Avec TaskService (injection unique) |

Avantages :

Interfaces et inversion de dépendances

Chaque service expose une interface, permettant une inversion de dépendances complète :

Cette architecture permet de :

Composants principaux

Composant Interface Rôle
TaskService TaskServiceInterface Façade unifiée - point d'entrée unique
TaskRegistryService TaskRegistryServiceInterface Enregistrement et suppression des tâches
TaskRunnerService TaskRunnerServiceInterface Exécution des tâches et retry
TaskValidatorService TaskValidatorServiceInterface Validation (dates, statuts, grace period)
TaskBatchService TaskBatchServiceInterface Traitement par lots (orchestration)
TaskFinderService TaskFinderServiceInterface Recherche et interrogation
BatchResultService BatchResultServiceInterface Construction immuable des résultats

Référence technique détaillée

Services

Service Interface Description Documentation
TaskService TaskServiceInterface Façade unifiée - point d'entrée unique Voir référence
TaskFinderService TaskFinderServiceInterface Recherche et interrogation des tâches Voir référence
TaskBatchService TaskBatchServiceInterface Orchestration du traitement par lots Voir référence
TaskRunnerService TaskRunnerServiceInterface Exécution des tâches et gestion des retry Voir référence
TaskValidatorService TaskValidatorServiceInterface Validation des tâches et période de grâce Voir référence
TaskRegistryService TaskRegistryServiceInterface Enregistrement des nouvelles tâches Voir référence
BatchResultService BatchResultServiceInterface Construction immuable des résultats Voir référence

Repositories

Repository Interface Description Documentation
TaskRepository TaskRepositoryInterface Persistance des tâches uniques Voir référence
RecurringTaskRepository RecurringTaskRepositoryInterface Persistance des tâches récurrentes Voir référence

Directives CLI

Directive Description Documentation
ProcessTasksDirective Traitement par lots depuis le CLI Voir référence
TaskUnregisterDirective Suppression de tâches depuis le CLI Voir référence

Classes de base

Classe Description Documentation
AbstractTask Classe de base pour toutes les tâches Voir référence

Value Objects

Value Object Description Validation
TaskIdVO Identifiant UUID Format UUID v4
TaskSignatureVO Signature lisible Minuscules + traits d'union
CounterVO Compteur incrémentable Non négatif
UnixTimestampVO Timestamp Unix Comparaisons temporelles
Iso8601DateTimeVO Date ISO 8601 Format standard
TaskDirectoryVO Chemin de dossier Construction sécurisée
TaskDateVO Date d'archivage Format YYYY-MM-DD
GracePeriodFilePathVO Chemin fichier grace period Construction sécurisée

Enums

Enum Description Valeurs
TaskStatus État de la tâche PENDING, RUNNING, SUCCESS, FAILED
TaskType Type de tâche PENDING, RECURRING, COMPLETED, UNIQUE
TaskOrder Ordre de traitement OLDEST, NEWEST
BatchMode Mode de batch FULL, UNIQUE_ONLY, RECURRING_ONLY
ErrorType Type d'erreur 8 types (voir tableau plus haut)

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.7.4
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 ...