Fopen daha hızlı () herhangi bir işlevi var mı?

6 Cevap php

Biz görüntüleri karşıya olduğu bir site var olduğunu varsayalım. Şimdi, bu özel oturum açmış kullanıcının albümü görüntülemek zorunda. Ne yapabilirim:

  1. Biz veritabanında bu resmin yolunu kaydetmek ve görüntü almak
  2. Biz tek bir klasörde tüm yüklenen görüntüleri kaydetmek için) (resmin sadece adını (benzersiz) Kaydet ve fopen kullanın

Şimdi benim soru:

Bu dosyayı almak yerine fopen () için çeşitli seçenekler nelerdir? Anlamı, bu daha hızlı başka bir şey var mı?

6 Cevap

Sen fopen galeriyi görüntülemek için kullanmak gerekmez. Neden böyle görüntüleri gösteremez:

<img src="/folder/with/your/images/<?php echo $unique_name; ?>" />

?

Ben daha hızlı olmadığını biliyorum, ama file_get_contents() daha özlü yok. Bir görüntü gibi bir ikili dosya ile muhtemelen FILE_BINARY bayrağı kullanmak isteyeceksiniz.

I) iyi olurdu edilir (readfile düşünüyorsun?

Nihai hızı için, bir RAM diskinde saklanan dosyası tutmak.

tmpfs daha fazla bilgi için bak.

Web sunucusu lighttpd veya Apache with mod_xsendfile ise, o zaman bir özel X-Sendfile başlığını belirterek dosyayı gönderebilirsiniz. Bu web sunucusu, çok, çok hızlı olabilir sendfile arama yapmanızı sağlar.

Neden sendfile, genellikle dosya sisteminden bit almak ve doğrudan bir TCP soketi koyabilirsiniz optimize çekirdek çağrı olduğunu.

Yüklediğiniz klasörde kaç tane resim vardır?

  • Eğer onlardan binlerce varsa, klasörleri küçük yapmayı düşünün.
  • Örneğin, terminfo'ya sistem 'a' ile başlayan kayıtlar tutmak için / usr / share / lib / terminfo'ya / a / alt dizini kullanır.
  • Perl için CPAN sistem şeyleri bölmek için yazarlar / id / A / AB / Abraham kullanır.

Nokta sistemi muhtemelen dosyaları bulmak için dizininde bir doğrusal arama yapar, ve bunların tüm başında olmasıdır. Küçük alt-dizinlere onları bölerek, büyük ölçüde arama süresi geliştirmek - ve dolayısıyla herhangi bir ve tüm dosya açma fonksiyonları hızı.

Bu konuda bir kağıt veya bir tartışma vardı - ben Eric Raymond'un 'The Art of Unix Programming' olduğunu düşünüyorum, ama bu ölçümler yapılmış bazı kağıtları referanslı - ve az programlama maliyetle değerli kat hızlanma verebilir.

Eğer doğru yapılırsa, görüntü saklama temel dizin ve görüntü dosya adı dosya adı oluşturmak için basit bir işlev yazabilirsiniz.