PHP Manual
/
Senior utvecklare

Olämplig användning av Garbage Collector

11. 02. 2023

Du är en utvecklare av en stor äldre applikation som du gradvis inför PHPStan i. Du börjar med nivå 0, som är ganska utmanande, men så småningom får du rätt. Du går vidare till nästa nivå, där en del av din kod börjar rapportera en oanvänd $lock-variabel som du bör ta bort.

Koden ser ut så här:

public function processOrder(int $orderId): void
{
$lock = Lock::createLock('beställning-' . $orderId);
// Det finns en viss logik här...
}

Du säger till dig själv att det måste finnas en låsning i variabeln som någon har glömt att frigöra senare, eller att det kanske händer i andra metoder som anropas senare. Du bestämmer dig därför för att ta bort den oanvända variabeln och behålla endast anropet till den statiska metoden som skapar låset.

Kan detta beslut orsaka ett kritiskt fel?

Om så är fallet, varför, och hur skulle den ursprungliga mekanismen ha fungerat?

Om inte, varför inte, och hur vet du att detta alltid är en säker operation?

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