Simplifica el seguimiento de contadores con los nuevos métodos Context de Laravel
- Publicado el 31 marzo, 2025
- Palabras: 123
¿Necesitas monitorizar contadores o métricas en tu aplicación Laravel? Los nuevos métodos de incremento y decremento para Context ofrecen una solución sencilla y elegante para mantener los contadores sin una gestión de estado compleja.

El sistema de contexto de Laravel te permite almacenar y acceder a datos en diferentes partes de tu aplicación. Con los métodos de incremento y decremento, ahora puedes rastrear fácilmente valores numéricos sin tener que gestionar manualmente el estado.
Veamos cómo funcionan estos métodos:
// Initialize or increment a counter
Context::increment('uploads'); // 1
Context::increment('uploads'); // 2
// Increment by a specific amount
Context::increment('uploads', 5); // 7
// Decrement counters
Context::decrement('active_users'); // -1
Context::decrement('remaining_credits', 3); // -3
#Ejemplo práctico
Estos métodos son especialmente útiles para el seguimiento de las métricas de la aplicación o la monitorización del uso de recursos. A continuación, se muestra un ejemplo práctico:
class FileUploadController extends Controller
{
public function store(Request $request)
{
// Increment total upload attempts
Context::increment('stats.upload_attempts');
try {
// Validate and store file
$request->validate([
'file' => 'required|file|max:10240',
]);
$path = $request->file('file')->store('uploads');
// Increment successful uploads counter
Context::increment('stats.successful_uploads');
// Track total size of uploads
$size = $request->file('file')->getSize();
Context::increment('stats.total_upload_size', $size);
return response()->json(['path' => $path]);
} catch (ValidationException $e) {
// Increment validation failure counter
Context::increment('stats.validation_failures');
throw $e;
} catch (Exception $e) {
// Increment error counter
Context::increment('stats.upload_errors');
throw $e;
}
}
}
Luego, puede utilizar middleware o un service provider para registrar estas estadísticas al final de cada solicitud:
class StatsLoggerMiddleware
{
public function handle($request, $next)
{
$response = $next($request);
// Log the stats at the end of the request
$this->logStats();
return $response;
}
protected function logStats()
{
// Get all the stats from context
$uploadAttempts = Context::get('stats.upload_attempts', 0);
$successfulUploads = Context::get('stats.successful_uploads', 0);
$validationFailures = Context::get('stats.validation_failures', 0);
$uploadErrors = Context::get('stats.upload_errors', 0);
$totalSize = Context::get('stats.total_upload_size', 0);
// Log the stats
Log::info('Upload Stats', [
'attempts' => $uploadAttempts,
'successful' => $successfulUploads,
'failed_validation' => $validationFailures,
'errors' => $uploadErrors,
'total_size' => $totalSize,
]);
}
}
Al aprovechar estos nuevos métodos Context, puede implementar una lógica de contador limpia y fácil de mantener en todas sus aplicaciones Laravel sin recurrir a variables globales o patrones complejos de gestión de estados.
Fuente: Harris Raftopoulos
Inicia la conversación
Hazte miembro de Antonio Jenaro para comenzar a comentar.
Regístrate ahora¿Ya estás registrado? Inicia sesión