I am somewhat new to PHP, and I am wondering:
How important is it to unset variables in PHP?
I know in languages like C, we free the allocated memory to prevent leaks, etc. By using unset on variables when I am done with them, will this significantly increase performance of my applications?
Also, is there a benchmark anywhere that compares the difference between using unset and not using unset?
See this example (and the article I linked below the question):
As you can see, at one point PHP had used up almost double the memory. This is because before assigning the ‘x’-string to
$x, PHP builds the new string in memory, while holding the previous variable in memory, too. This could have been prevented withunsetting$x.Another example:
This will output something like
At the first iteration
$stris still empty before assignment. On the second iteration$strwill hold the generated string though. Whenstr_repeatis then called for the second time, it will not immediately overwrite$str, but first create the string that is to be assigned in memory. So you end up with$strand the value it should be assigned. Double memory. If you unset$str, this will not happen:Does it matter? Well, the linked article sums it quite good with
It doesn’t hurt to unset your variables when you no longer need them. Maybe you are on a shared host and want to do some iterating over large datasets. If unsetting would prevent PHP from ending with Allowed memory size of XXXX bytes exhausted, then it’s worth the tiny effort.
What should also be taken into account is, that even if the request lifetime is just a second, doubling the memory usage effectively halves the maximum amount of simultaneous requests that can be served. If you are nowhere close to the server’s limit anyway, then who cares, but if you are, then a simple unset could save you the money for more RAM or an additional server.