> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Hibernación (suspensión automática) de Laravel Cloud

> Se explica el mecanismo de suspensión automática de Laravel Cloud, cómo activarlo, sus limitaciones y cómo evitar reactivaciones innecesarias mediante Path Blocking.

## ¿Qué es Hibernation?

La **Hibernation (suspensión automática)** de Laravel Cloud es una funcionalidad antigua que transiciona un entorno a estado suspendido cuando no hay peticiones HTTP durante un tiempo determinado.
En la nueva Flex Compute actual, se utiliza como sucesor el **Scale to Zero**, más rápido.

La Hibernation de Legacy Flex permite detener la facturación de compute durante la suspensión, pero la reactivación tras recibir una petición HTTP suele tardar entre 5 y 20 segundos. En el nuevo Scale to Zero, el arranque se ha reducido a **menos de 500 ms**, y además, incluso durante la suspensión, el entorno se arranca automáticamente para tareas programadas y procesamiento de colas.

<Warning>
  Si vas a usar Laravel Cloud por primera vez, lo seguro es partir de **Scale to Zero** en lugar de Hibernation. Consulta [Laravel Cloud — Todo sobre el PaaS específico para Laravel](/es/blog/laravel-cloud) para una visión general incluyendo Managed Queues y los nuevos planes de precios.
</Warning>

```mermaid theme={null}
sequenceDiagram
    participant User as Usuario
    participant Cloud as Laravel Cloud
    participant App as App

    User->>Cloud: Sin peticiones (timeout)
    Cloud->>App: Transición a suspensión<br>(facturación detenida)
    User->>Cloud: Petición HTTP
    Cloud->>App: Reactivación en 5–20 s
    App-->>User: Respuesta
```

## Lo que ha cambiado con Scale to Zero

En el Scale to Zero de la nueva Flex Compute, se han resuelto en gran medida los puntos problemáticos de la Hibernation anterior.

| Elemento                       | Hibernation antiguo                              | Nuevo Scale to Zero                                                                    |
| ------------------------------ | ------------------------------------------------ | -------------------------------------------------------------------------------------- |
| Reactivación por petición HTTP | 5–20 s                                           | Menos de 500 ms                                                                        |
| Scheduled Tasks                | No se ejecutan durante la suspensión             | Se arrancan automáticamente y se ejecutan incluso durante el sleep                     |
| Procesamiento de cola          | No funciona durante la suspensión                | Se arranca automáticamente incluso durante el sleep. Se recomienda usar Managed Queues |
| Uso recomendado                | Operación de ahorro para el antiguo entorno Flex | Configuración estándar actual                                                          |

<Info>
  En la Hibernation anterior había el problema de que las tareas programadas y las colas no funcionaban durante la suspensión. En Scale to Zero este problema se ha resuelto, y en particular, el procesamiento de colas puede continuar de forma segura aunque el App cluster esté dormido si se usa Managed Queues.
</Info>

## Pasos para activar la Hibernation antigua

<Steps>
  <Step title="Abre el App compute cluster">
    En el dashboard del lienzo de infraestructura del entorno, haz clic en App compute cluster.
  </Step>

  <Step title="Activa Hibernation">
    Activa el toggle **Hibernation**.
  </Step>

  <Step title="Guarda y vuelve a desplegar">
    Haz clic en **Save and Redeploy** para aplicar los cambios.

    <Warning>
      No se activa con solo cambiar la configuración. Siempre se requiere Save and Redeploy.
    </Warning>
  </Step>
</Steps>

<Tip>
  Si vas a activarlo por primera vez en el entorno actual, utiliza el toggle **Scale to Zero** del App compute cluster. Las siguientes limitaciones son una explicación centrada principalmente en la Hibernation antigua / Legacy Flex.
</Tip>

## Limitaciones durante la suspensión de la Hibernation antigua

Mientras Hibernation está activa y el entorno está suspendido, no funcionan las siguientes funciones.

| Función                                  | Comportamiento durante la suspensión       |
| ---------------------------------------- | ------------------------------------------ |
| Procesamiento de peticiones HTTP         | Detenido (se procesa tras la reactivación) |
| Task Scheduler                           | No se ejecuta                              |
| Queue Worker                             | No se ejecuta                              |
| Procesos en segundo plano personalizados | No se ejecutan                             |

<Info>
  Cuando se reactiva desde la suspensión, estos procesamientos se reanudan automáticamente. Sin embargo, los jobs programados que "deberían haberse ejecutado" durante la suspensión no se ejecutan retroactivamente.
</Info>

Además, Hibernation tiene las siguientes limitaciones.

* La suspensión solo es posible en **Flex Compute**. En Pro Compute no se puede activar Hibernation.
* La suspensión se realiza **por entorno**. Cuando el App cluster se suspende, todos los Worker cluster del mismo entorno también se suspenden.

## Causas de reactivación innecesaria

Si hay una petición HTTP, el entorno se reactiva automáticamente, pero también se producen reactivaciones por peticiones no intencionadas.

* **Bots y crawlers**: motores de búsqueda o escáneres de seguridad rastrean páginas automáticamente
* **Previsualizaciones de enlaces en Slack o Teams**: apps de mensajería acceden para obtener miniaturas de los enlaces
* **Escaneos de WordPress**: escaneos automáticos que buscan entornos de WordPress acceden a `/wp-admin` y similares
* **Ataques que buscan archivos `.php`**: escaneos automáticos que apuntan directamente a archivos PHP

A los dominios `*.laravel.cloud` de Laravel Cloud se les añade la cabecera `X-Robots-Tag: noindex, nofollow` para que no sean indexados por los motores de búsqueda, pero si el dominio se descubre, no se puede evitar del todo. En los dominios personalizados no se añade la cabecera `noindex`.

<Tip>
  Usar nombres de dominio lo más complejos posible reduce el riesgo de que los bots descubran el vanity domain.
</Tip>

## Prevenir reactivaciones innecesarias con Path Blocking

**Path Blocking** es una funcionalidad que bloquea, sin procesar, las peticiones a determinadas extensiones o rutas mientras el entorno está suspendido. Previene reactivaciones innecesarias causadas por escaneos de WordPress o ataques que apuntan a archivos PHP.

Las extensiones y rutas bloqueadas por defecto son las siguientes.

**Extensiones bloqueadas:**

```
.php, .php3, .php4, .php5, .php6, .php7, .php8,
.phtml, .pht, .phps, .env, .git
```

**Rutas bloqueadas:**

```
/wp-admin, /wp-content, /wp-includes, /wp-json
```

Estas peticiones se responden sin reactivar la app aunque el entorno esté suspendido.

<Info>
  Como el enrutamiento normal de Laravel no usa peticiones con extensión `.php`, bloquearlas no afecta al funcionamiento de la aplicación.
</Info>

## Usos adecuados e inadecuados para la Hibernation antigua

<Columns cols={2}>
  <Card title="Usos adecuados" icon="check">
    * **Entornos de staging y desarrollo**: no requieren estar siempre en marcha, por lo que se puede reducir mucho el coste
    * **Blogs personales o portafolios**: usos con poco tráfico
    * **Apps de demo o prueba**: es suficiente con reactivarse solo cuando se necesita
    * **Herramientas internas de baja frecuencia**: horas de uso limitadas
  </Card>

  <Card title="Usos inadecuados" icon="xmark">
    * **Usos que emplean tareas programadas**: `schedule:run` no se ejecuta durante la suspensión
    * **Usos que requieren jobs de cola periódicos**: la cola también se detiene durante la suspensión
    * **Entornos de producción que no admiten latencia de arranque**: la reactivación tarda 5–20 s
    * **Apps que usan WebSocket**: la conexión no se mantiene y la suspensión puede retrasarse
  </Card>
</Columns>

<Warning>
  Si quieres ejecutar procesos periódicos con el task scheduler (envío de emails, agregaciones de datos, etc.), al activar Hibernation esos procesos no se ejecutarán. Para estos usos hay que desactivar Hibernation o diseñar el sistema para mantener despierto el entorno enviándole peticiones desde un scheduler externo (por ejemplo, GitHub Actions).
</Warning>

<Info>
  En el nuevo Scale to Zero esta restricción se ha relajado. Las Scheduled Tasks se ejecutan automáticamente incluso durante el sleep, y el procesamiento de colas, si se usa Managed Queues, no se ve afectado por la suspensión del App cluster.
</Info>

## Conclusión

En Legacy Flex la Hibernation todavía sirve para reducir costes, pero actualmente Scale to Zero es más práctico.

* En Legacy Flex se factura solo por el tiempo activo. Suspensión automática tras el timeout.
* El tiempo de reactivación de la Hibernation antigua es de 5 a 20 s.
* El nuevo Scale to Zero arranca en menos de 500 ms.
* En Scale to Zero, las Scheduled Tasks y las Managed Queues funcionan incluso durante el sleep.
* Con Path Blocking se previenen reactivaciones innecesarias por bots.
* Solo compatible con Flex Compute.

## Páginas relacionadas

<Columns cols={2}>
  <Card title="Programación" icon="calendar" href="/es/scheduling">
    Consulta la configuración del Task Scheduler y su funcionamiento en Laravel Cloud.
  </Card>

  <Card title="Colas" icon="list" href="/es/queues">
    Consulta la configuración del Queue Worker y cómo operarlo en Laravel Cloud.
  </Card>

  <Card title="Visión general de Laravel Cloud" icon="cloud" href="/es/blog/laravel-cloud">
    Repasa Managed Queues, Scale to Zero y los nuevos planes de precios en conjunto.
  </Card>
</Columns>


## Related topics

- [Laravel Octane](/es/octane.md)
- [Cloud Sessions](/es/packages/laravel-copilot-sdk/cloud-sessions.md)
- [Laravel Cloud CLI — Operar Laravel Cloud desde la terminal](/es/blog/laravel-cloud-cli.md)
- [laravel/symfony-on-cloud — Ejecutar aplicaciones Symfony en Laravel Cloud](/es/blog/symfony-on-cloud-introduction.md)
- [Eventos de streaming](/es/packages/laravel-copilot-sdk/streaming-events.md)
