PHP Manual
/
Sviluppatore senior

Uso inappropriato del Garbage Collector

11. 02. 2023

Siete lo sviluppatore di una grande applicazione legacy, nella quale state gradualmente introducendo PHPStan. Si inizia con il livello 0, che è piuttosto impegnativo, ma alla fine si riesce a risolvere il problema. Si passa ai livelli successivi, dove una parte del codice inizia a segnalare una variabile $lock inutilizzata che dovrebbe essere rimossa.

Il codice si presenta come segue:

public function processOrder(int $orderId): void
{
$lock = Lock::createLock('ordine-' . $orderId);
// C'è una certa logica qui...
}

Ci si dice che ci deve essere un blocco memorizzato nella variabile che qualcuno ha dimenticato di rilasciare in seguito, o forse sta accadendo all'interno di altri metodi che vengono chiamati in seguito. Si decide quindi di rimuovere la variabile inutilizzata, mantenendo solo la chiamata al metodo statico che crea il blocco.

Questa decisione può causare un errore critico?

Se sì, perché e come avrebbe potuto funzionare il meccanismo originale?

Se non è così, perché non lo è e come si fa a sapere che si tratta sempre di un'operazione sicura?

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
8.
Status:
All systems normal.
2024