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

# Laravel Cloud Hibernation (sospensione automatica)

> Spiega il funzionamento della sospensione automatica di Laravel Cloud, come abilitarla, le limitazioni e la prevenzione dei risvegli inutili tramite Path Blocking.

## Cos'è Hibernation

**Hibernation (sospensione automatica)** di Laravel Cloud è la vecchia funzionalità che manda l'ambiente in stato sospeso quando non riceve richieste HTTP per un certo periodo.\
Nel nuovo Flex compute attuale, il **Scale to Zero** più veloce viene usato come suo successore.

L'Hibernation di Legacy Flex permette di interrompere la fatturazione del compute durante la sospensione, ma il ripristino dopo una richiesta HTTP richiede tipicamente 5-20 secondi. Con il nuovo Scale to Zero l'avvio è ridotto a **meno di 500ms** e, anche durante lo sleep, l'ambiente si avvia automaticamente per task pianificati ed elaborazione della coda.

<Warning>
  Se inizi ora con Laravel Cloud, la scelta più sicura è ragionare tenendo come base **Scale to Zero** invece di Hibernation. Per un quadro complessivo, comprensivo di Managed Queues e nuovi piani tariffari, consulta [Laravel Cloud — la panoramica completa del PaaS dedicato a Laravel](/it/blog/laravel-cloud).
</Warning>

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

    User->>Cloud: Nessuna richiesta (timeout)
    Cloud->>App: Passaggio a sospensione<br>(fatturazione interrotta)
    User->>Cloud: Richiesta HTTP
    Cloud->>App: Ripristino in 5-20 secondi
    App-->>User: Risposta
```

## Cosa cambia con Scale to Zero

Con Scale to Zero del nuovo Flex compute, molti dei problemi del vecchio Hibernation sono risolti.

| Aspetto                      | Vecchio Hibernation               | Nuovo Scale to Zero                                                              |
| ---------------------------- | --------------------------------- | -------------------------------------------------------------------------------- |
| Ripristino su richiesta HTTP | 5-20 secondi                      | Meno di 500ms                                                                    |
| Scheduled Tasks              | Non gira durante la sospensione   | Si avvia ed esegue automaticamente anche durante lo sleep                        |
| Elaborazione code            | Non gira durante la sospensione   | Si avvia automaticamente durante lo sleep. È consigliato l'uso di Managed Queues |
| Uso raccomandato             | Risparmio in vecchi ambienti Flex | Configurazione standard attuale                                                  |

<Info>
  Il vecchio Hibernation aveva il problema che, durante la sospensione, task schedulati e coda non giravano. Scale to Zero risolve questo aspetto e, per l'elaborazione della coda, con Managed Queues si può proseguire in sicurezza anche mentre l'App cluster dorme.
</Info>

## Procedura di abilitazione del vecchio Hibernation

<Steps>
  <Step title="Apri l'App compute cluster">
    Nella dashboard del canvas infrastrutturale dell'ambiente, clicca l'App compute cluster.
  </Step>

  <Step title="Abilita Hibernation">
    Attiva il toggle **Hibernation**.
  </Step>

  <Step title="Salva e ridispiega">
    Clicca **Save and Redeploy** per applicare le modifiche.

    <Warning>
      Modificare la configurazione da solo non abilita la funzione. Save and Redeploy è obbligatorio.
    </Warning>
  </Step>
</Steps>

<Tip>
  Se vuoi abilitarlo da zero in un ambiente attuale, usa il toggle **Scale to Zero** dell'App compute cluster. Le limitazioni sotto elencate riguardano principalmente il vecchio Hibernation / Legacy Flex.
</Tip>

## Limitazioni durante la sospensione del vecchio Hibernation

Quando Hibernation è abilitato e l'ambiente è sospeso, le funzionalità seguenti non funzionano.

| Funzionalità                          | Comportamento durante la sospensione            |
| ------------------------------------- | ----------------------------------------------- |
| Elaborazione richieste HTTP           | Interrotta (viene elaborata dopo il ripristino) |
| Task Scheduler                        | Non eseguito                                    |
| Queue Worker                          | Non eseguito                                    |
| Processi in background personalizzati | Non eseguiti                                    |

<Info>
  Al ripristino dalla sospensione, queste elaborazioni riprendono automaticamente. Tuttavia, i job pianificati che "sarebbero dovuti arrivare" durante la sospensione non vengono eseguiti a ritroso.
</Info>

Inoltre, Hibernation ha le seguenti limitazioni.

* La sospensione è possibile **solo su Flex compute**. Su Pro compute non si può abilitare Hibernation.
* La sospensione avviene **a livello di ambiente**. Se il cluster App si sospende, si sospendono anche tutti i Worker cluster nello stesso ambiente.

## Cause di ripristino non desiderato

Se arriva una richiesta HTTP, l'ambiente si ripristina automaticamente, ma il ripristino può accadere anche per richieste non intenzionali.

* **Bot e crawler** — motori di ricerca e scanner di sicurezza che effettuano crawl automatici delle pagine
* **Anteprime link di Slack o Teams** — le app di messaggistica accedono per recuperare la thumbnail del link
* **Scansioni WordPress** — scansioni automatiche che cercano ambienti WordPress accedendo per esempio a `/wp-admin`
* **Attacchi che cercano file `.php`** — scansioni automatiche che puntano direttamente ai file PHP

Al dominio `*.laravel.cloud` di Laravel Cloud viene aggiunto l'header `X-Robots-Tag: noindex, nofollow` per evitare l'indicizzazione, ma una volta scoperto il dominio non può essere impedito del tutto. Sui domini personalizzati l'header `noindex` non viene aggiunto.

<Tip>
  Usare un nome di dominio il più possibile complesso riduce il rischio che i bot scoprano il vanity domain.
</Tip>

## Prevenire i ripristini inutili con Path Blocking

**Path Blocking** è una funzionalità che, per richieste su determinate estensioni o percorsi, le blocca senza elaborarle mantenendo lo stato di sospensione. Impedisce risvegli inutili dovuti a scansioni WordPress o attacchi verso file PHP.

Estensioni e percorsi bloccati per impostazione predefinita sono i seguenti.

**Estensioni bloccate:**

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

**Percorsi bloccati:**

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

Queste richieste ricevono risposta senza risvegliare l'app, anche se l'ambiente è sospeso.

<Info>
  Il normale routing di Laravel non usa richieste con estensione `.php`, quindi bloccarle non ha effetti sul funzionamento dell'app.
</Info>

## Usi adatti e non adatti al vecchio Hibernation

<Columns cols={2}>
  <Card title="Usi adatti" icon="check">
    * **Ambienti di staging e sviluppo** — non serve la disponibilità continua, si abbattono molto i costi
    * **Blog personali e portfolio** — usi con traffico limitato
    * **App demo o di test** — è sufficiente il ripristino solo quando serve
    * **Strumenti interni a bassa frequenza** — orari di utilizzo limitati
  </Card>

  <Card title="Usi non adatti" icon="xmark">
    * **Usi con task scheduling** — durante la sospensione `schedule:run` non gira
    * **Usi che richiedono job in coda periodici** — durante la sospensione anche la coda si ferma
    * **Ambienti di produzione che non tollerano latenza di avvio** — il ripristino richiede 5-20 secondi
    * **App che usano WebSocket** — la connessione non può essere mantenuta e la sospensione può essere ritardata
  </Card>
</Columns>

<Warning>
  Se vuoi eseguire regolarmente processi con lo scheduler (invio email, aggregazioni di dati, ecc.), abilitare Hibernation impedisce l'esecuzione di quei processi. Per questi usi devi disattivare Hibernation o progettare un sistema che invii richieste da uno scheduler esterno (per esempio GitHub Actions) per mantenere sveglio l'ambiente.
</Warning>

<Info>
  Con il nuovo Scale to Zero questi vincoli sono attenuati. Gli Scheduled Tasks vengono eseguiti automaticamente anche durante lo sleep e l'elaborazione della coda, con Managed Queues, non risente della sospensione dell'App cluster.
</Info>

## Conclusioni

Hibernation può ancora servire a contenere i costi in Legacy Flex, ma oggi Scale to Zero è più pratico.

* In Legacy Flex si paga solo il tempo attivo. La sospensione automatica avviene dopo il timeout.
* Il tempo di ripristino del vecchio Hibernation è 5-20 secondi.
* Il nuovo Scale to Zero si avvia in meno di 500ms.
* Con Scale to Zero, Scheduled Tasks e Managed Queues funzionano anche durante lo sleep.
* Path Blocking previene ripristini inutili causati dai bot.
* Supportato solo su Flex compute.

## Pagine correlate

<Columns cols={2}>
  <Card title="Scheduling" icon="calendar" href="/it/scheduling">
    Verifica la configurazione del Task Scheduler e il comportamento su Laravel Cloud.
  </Card>

  <Card title="Code" icon="list" href="/it/queues">
    Verifica la configurazione del Queue Worker e il funzionamento in Laravel Cloud.
  </Card>

  <Card title="Panoramica di Laravel Cloud" icon="cloud" href="/it/blog/laravel-cloud">
    Riassunto di Managed Queues, Scale to Zero e nuovi piani tariffari.
  </Card>
</Columns>


## Related topics

- [Laravel Octane](/it/octane.md)
- [Laravel Cloud — la panoramica completa del PaaS dedicato a Laravel](/it/blog/laravel-cloud.md)
- [Introduzione a Laravel Nightwatch](/it/blog/nightwatch-introduction.md)
- [Cloud Sessions](/it/packages/laravel-copilot-sdk/cloud-sessions.md)
- [Laravel Cloud CLI — usa Laravel Cloud dal terminale](/it/blog/laravel-cloud-cli.md)
