PHP Bellek Taşma?

2 Cevap php

Im şu anda ... yine bir php çerçeve inşa.

Ben yapılandırma adında bir sınıf var.

onun oldukça basit, onun kadar gibi seslendi:

$conf = config::get('general');

$ Conf şimdi yapılandırma güzellikler dolu bir dizidir.

sınıf iskeleti yani gibidir:

final class config {

private static $configs = array();

public static function get($name) {

return self::$configs[$name];

}

}

$ yapılandırmaları dizi zaten kalabalık olan ve "genel" bir anahtarı vardır varsayalım.

Bu "genel" tuşuna tam 1 megabayt bir dizi tutar.

Ben çağrı Diyelim

config::get('general');

Farklı değişkenlere 10 kez. Değişkenlerin hiçbiri sonradan düzenlenebilir vardır ... Bu i 10 değişkenleri her 1 megabayt veya 1 megabayt işaret 10 değişkenleri içeren var demek?

2 Cevap

Sadece bir, bunları değiştirmek istemiyorsanız.

Ama php Eğer herhangi bir davranışı güvenebilirsiniz dil değil ;-)

Sadece çalıştım:

<?php

printf("%10d\n",memory_get_usage());
$a = array_fill(0,30000,'oh');
printf("%10d\n",memory_get_usage());
$b = $a;
printf("%10d\n",memory_get_usage());
$b[] = '';
printf("%10d\n",memory_get_usage());

çıktı:

    325524
   2256916
   2256980
   4188316

Benim anlayış bunu yazdım gibi her 1MB 10 diziler alacağı olduğunu.

Eğer bize & eğer bir referans ile değişken geçmek ve bir işaretçi döndürür veya kullanmak ve birine referans dönüş değerine göre bir geri dönmek için işlev adının önünde ne istediğinizi yapmak mümkün olabilir.