PHP opcode önbellek Temelleri

1 Cevap php

Şu anda başka bir site için yeniden kullanımı düşünmüyorsanız çok büyük bir proje üzerinde, her yerde dosyalarına içine kodlanmış sitenin adı var. Ben site adını değiştirmek için hiç olsaydı şimdi, her yerde bunu değiştirmek için çaba alacaktı. Ben bariz çözüm sadece bir değişken veya sabit olarak adını saklamak için olduğunu biliyorum, ama sen düşünme benim mikro-optimize şekilde diyebiliriz sanırım: Ben her zaman PHP ayrıştırmak zorunda küçük bir şey olacağını düşündüm. Ben çok fark yapmaz fark yok, ama ben sadece APC gibi bir opcode önbellek PHP kullanarak bile yeniden ayrıştırmak zorunda olacağı anlamına gelir olmadığını bilmek istedi?

1 Cevap

Gerçekten: Eğer böyle bir şey umurumda değil gerekir.

Yapılandırmasında herhangi bir farklılık olacak araçları much fark daha (for instance, the apc.stat seçeneği APC için, sizin sunucu yükü oldukça büyük bir etkisi olabilir - ve DB gibi bir şey size yüzlerce olacaktır yok sorgular zaman daha fazla etki)

İşte, muhtemelen ne önemli maintenability olduğunu:

  • size herhangi bir yarar (except from that nano-optimisation) site adı sabit kodlanmış değil alır?
  • o sabit kodlanmış olması için size herhangi bir fayda elde eder (same exception)?

Cevap iki durumda da "hayır" dır, ve uygulama çalışırsa ... iyi, bu konularda ne!


If you have time to spend with that kind of less than micro optimisations, it would probably be better spent going through your application code with a profiler, going through your DB queries, the number of HTTP requests you are doing to fetch static JS/CSS/images, upgrading PHP or modifying your code so it can run on PHP 5.3 (as PHP 5.3 comes with some optimisations over 5.2), ...

Tüm bu muhtemelen daha yüksek bir kazanç elde edecek ;-)


Edit after the comment :

Temel olarak, ne zaman bir PHP dosyası yüklenir:

  • dosya diskten okunan
  • incelenir ve işlem kodu derlenmiş
  • opcodes yürütülür

Bir opcode önbellek ile:

  • if there is a place in RAM containing the opcodes, those are loaded from RAM (is, no reading of a file, nor parsing/compiling)
    • değilse, önce adımları görmek - sadece eklediğiniz bir sonraki istek için, infazdan önce "RAM'de opcodes saklamak"
  • and opcodes yürütülür

apc.stat seçeneği daha yakın ise APC RAM opcodes kullanarak veya dosyayı yeniden derleme arasında karar vermek bir dosyanın son değiştirilme tarihi / saati incelemek gerektiğini belirler ki RAM'de opcodes.

Bu seçeneği devre dışı bırakmak anlamına gelir:

  • files are not checked on disk => faster, and uses less resources
    • Oldukça yüklü bir sunucuda bu seçeneği devre dışı zaman Örneğin, ben 10 ve% 15 arasında, CPU-yük bir damla gördüm
  • değişiklik için herhangi bir onay olduğu gibi bir değişiklik dikkate alınması istiyorsanız ama, siz önbelleği temizlemek zorunda


Still, what I said is true : there are probably lots of things you can optimise that will mean more important gain than a simple "should I use hard-coded values" versus "should I use constants/variables".