göreli ve mutlak yolları php

8 Cevap php

Ben bir php dosyası da dahil olmak üzere zaman mutlak yolları kullanarak göreli yollar daha hızlı işlem süresine sahip olduğunu okudum.

Kullanmak için ne önerirsiniz?

include("inlcudes/myscript.php");

veya

include("/home/ftpuser/public_html/includes/myscript.php");

veya even

set_include_path("/home/ftpuser/public_html/includes");
include("myscript.php");

Or is it something that I really shouldn't wveyary about?

8 Cevap

Ben genellikle elle veya bu gibi sabit bir set:

define('ROOT', dirname(__FILE__));

Sonra yapın

require ROOT . '/include/file.php';

Bu vakaların% 99 için en iyi yöntemdir:

include(dirname(__FILE__)."/includes/myscript.php");

Bu benim deneyim dahil ilgili hatalar çok sayıda bilinen bir kaynağı olan, include_path görmezden gelecek demektir mutlak bir yol olarak biter ...

Bilge performans olsa, ben mutlak ve göreli yollar arasında çok fark var şüpheliyim. Bu uzun vadede hiçbir anlamı mikro optimizasyonu bir tür. Eğer ./ ve pear yüklü olduğu her yerde yolu olan iki olağan suçlularından Lütfen daha eklemek sürece genellikle sadece include_path 2-3 şeyler olacak.

Kesinlikle seçenek iki gibi değil, zor-code yollarını yapmak. İyi bir alternatif:

define('BASE_DIR', '/home/ftpuser/public_html/includes');
include(BASE_DIR . '/myscript.php');
include(BASE_DIR . '/myscript2.php');
include(BASE_DIR . '/myscript3.php');
include(BASE_DIR . '/myscript4.php');

Muhtemelen bir yerlerde 5 ila 50 (ben tahmin ediyorum) içeren olacak göz önüne alındığında, gerçekten bu konuda endişe olmaz. Sadece göreli yollar ile gitmek. Şunlardır zaman farkı bile fark olmayacaktır. Eğer büyük bir web uygulaması geliştirmek konum ve yüzlerce olacaksa, o başka bir hikaye olabilir ...

I microtime(true) kullanarak basit bir hız testi senaryo yazdı. Bu bir milyon yineleme ile yöntemler dahil olmak üzere aşağıdaki beş testleri:

// Absolute path.
include('/home/ftpuser/public_html/includes/myscript.php');

// Predefined path.
define('PATH', '/home/ftpuser/public_html/includes/');
include(PATH . 'myscript.php');

// Relative path.
include('myscript.php');

// Using set_include_path().
set_include_path('/home/ftpuser/public_html/includes/');
include('myscript.php');

// Superglobal path.
include(dirname(__FILE__) . '/myscript.php');


Which gave the following results (in seconds):

    Absolute path:            263.222
    Predefined path:          263.545
    Relative path:            301.214
    Using set_include_path(): 302.396
    Superglobal path:         269.631


My opinion based on these results is to use a predefined path, because it's the fastest only surpassed by an absolute path. However, an absolute path has the drawback that it must be altered in every file when a change is necessary.

Bu yardımcı umuyoruz. :)

P.S.
define and set_include_path() were used only once during execution of the script (they are located outside of the loop).

Benim app başlatma üzerinde bulunmaktadır yolunu ayarlayarak dizinleri / kitaplıkları dahil Gözat kurulum eğilimindedir.

set_include_path("/home/ftpuser/public_html/includes");
include("myscript.php");

Zend framework kütüphane sınıfları yüklemek için benzer bir şey yapar.

En önemli şey, ilk etapta mutlak bir yol üzerinden bir dosya dahil değil zaman arrange the include paths so that the largest amount of require / include-aramalar ilk bahsedilen yolunda sıkışıp kalırlar etmektir.

Mutlak bir yolu üzeri her şey dahil güvenerek kütüphanenin yolunu değişen bireysel buna atıfta yerine tek bir yerde içerir yolunu değiştirerek tüm bu dosyaları değiştirmek demektir çünkü korumak zordur.

mutlak bir yolu kullanarak değil zaman, php bir eşleşme bulur kadar yolları dahil tüm dosyayı bulmaya çalışır.

as many include paths can be added as you like, so this could , in rare cases, cause the script to be slow.
If you are including many files (for instance to initialize a framework) using absolute paths could speed up the script a little...

Ben aynı göreli yol / dosyaadı pare dosya sistemi üzerinde birden çok kez meydana geldiğinde de komplikasyonlara neden olabileceğini düşünüyorum, ve başka olayini gerekebilir olduğunda böylece php, ilk görüldüğü yerde seçer

Şahsen ben bu konuda endişeli asla ve sadece göreli yolları kullanılır, her çalıştırmak için gereken süreyi kontrol ederek tüm yöntemleri test etmek için iyi olurdu.

Ben mutlak yolları biraz daha hızlı, bir hata olur merak değer olabilir olurdu sanırım, (tabii ki kapalı error_reporting açın) ve bu bir güvenlik riski neden olacaktır kullanıcıların ekranına tam dosya yolunu tükürmek olacak?