Evet bu serbest olsun demek.
kullanarak bunları kontrol edebilirsiniz:
function a() {
$var = "Hello World";
$content = "";
for ($i = 0; $i < 10000; $i++) {
$content .= $var;
}
print '<br>$content size:'.strlen($content);
print '<br>memory in function:'.memory_get_usage();
return null;
}
print '<br>memory before function:'.memory_get_usage();
a();
print '<br>memory after function:'.memory_get_usage();
çıkışı: fonksiyon PHP 273.312 bayt kullanılır
memory before function:273312
$content size:110000
memory in function:383520
memory after function:273352
önce
.
fonksiyonu bitirildi önce yine bellek kullanımını kontrol ve
383520. Biz 110,000 bayt $ içeriğinin boyutunu kontrol kullandı.
273312 + 110000 = 383312
Kalan 208 bayt diğer değişkenlerden geliyor (yalnızca $ içeriği saydık)
İşlev bittikten sonra bellek kullanımını tekrar kontrol ettik ve (neredeyse (40 baytlık fark)) durumuna geri döndük. daha önce olduğu gibi.
40 bayt farkının işlev bildirimleri ve döngü bildirimi olması olasıdır.
* verimli * - Bu şekilde sorun olamaz. Düşündüğünüz şey * verimli bir şekilde * farklı bir şey olabilir (büyük olasılıkla BTW'ye soyunma tarzınız olabilir) aslında PHP'de * etkili * olan şeydir. – hakre
iyi demek istediğim, değişkenin artık kullanılmayacağı belli oluyor. –
Daha da erken. İşlev bittiğinde, tüm yerel * değişkenler * gider. Verilerin hafızada (geçici olarak) kalması ya da olmaması önemlidir. Ama bilmeniz gereken, bellek yönetimiyle ilgili biraz daha fazla bilgiye sahip olmanız gerektiğini bildiğim, ki bu sizin gücünüzü değil (herhangi bir suç değil).Bellek bloklarını sistemden ayırmak çok pahalı olur, çünkü sadece yerel bir değişken artık kullanılmaz. – hakre