Nasıl dahil 1800-satırı PHP hızlandırabilir?

5 Cevap php

Ben şimdi 1800 satır uzunluğunda tek bir PHP dosyası tüm önemli işlevleri koymak için kodumu tasarlanmıştır.

Ben diğer PHP dosyaları arama - AJAX işlemciler, - örneğin basit bir "Require_oncenin (" codeBank.php ")" ile.

Ben birkaç küresel diziler başka bir şey daha ve ilgili diğer fonksiyonları bir grup olsa bile bu, tüm bu fonksiyonları yüklemek için yaklaşık 10 saniye sürer keşfediyorum. Ana AJAX işlemci kodu, örneğin, sadece (olan operasyonel işlevi codeBank.php depolanır), basit bir sözdizimi doğrulama yapmak için 8 saniye alıyor.

Ben require_oncenin açıklama, benim AJAX tepki süresi 40 ms için 10 sn den hızlandırır, böylece PHP fonksiyonları olanlar 1800 hatları ile bir şeyler yapmaya çalışıyor bu oldukça açık. Bu şaşırtıcı olan, APC yüklüyken bile bulunuyor.

Ne geri alt-100ms seviyeye benim kod hız almak için ne yapmalıyım? Ben nasılsa cache ödeneği almak için başarısız mıyım? Ben farklı parçalar halinde o tek fonksiyonlu banka dosyası kesmek gerekir mi? Benim tepki süresi kadar vida yapıyor olabilir diğer ince şeyler var mı?

Ya da bütün bunları engelleme, PHP operasyonlar hız darbe vuran içine daha kazmak için bazı araçları nelerdir?

==========================

[EDIT] Çözülmüş.

==========================

Size birçok tür kişilerin belirttiği gibi, sadece 1800 satır php fonksiyon kütüphanesi olan yavaşlamalar neden niçin hiçbir mantıklı nedeni yok. Aslında ne olup bittiğini ben uzun, API-çağrı işlevlerinden birini çağırarak bir hata ayıklama satır vardı olmasıdır. Ben PHP dosyasını dahil oldu zaman, ben, uzaktan gelen sorgulanan verileri bir bütün veri yapısını inşa edildi.

Ben o çizgiyi öldürdüm sonra, her şey geri sallanma 30ms tepkiler gitti. Ne bana garip kalır Require_once () php dosyasını ajax komut dosyası denilen başlamıştı her zaman açılır olmasıdır. Ama bu benim şeklin dışında olmak ve her zaman AJAX script kapatır bitmiş ve yeniden açıldı ve her zaman çekirdekler oluyor unutmadan bulunuyor.

5 Cevap

Kod 100 000 hatları ile bir dosya olabilir ve hala yüklemek için 10 saniye almamalıdır.

Çalıştıran farkında değilsiniz orada bazı başlatma kodu muhtemelen var. Bir profil (xdebug veya Zend Studio bir) bir göz atın ve optimizasyon rota aşağı gitmeden önce yavaş aşağı neden tam olarak ne olduğunu bulmak. Eğer dosya uzun 1800 satır olduğu için basitçe düşünüyorsanız, yanlış yoldasınız.

Küçük dosyalar ve talep üzerine yük içine grup fonksiyonları Can?

Onlar belki statik yöntemlerle, küresel işlevleri veya sınıfları?

Eğer öyleyse, PHP'nin autoloading yararlanabilir. spl_autoload_register() bakmak, __autoload() içine ya da daha esnek bir çözüm arayın.

Kesinlikle ne olursa olsun yukarı dosya split - başka hiçbir şey size Codebase daha organize olan alırsınız verimlilik artışı buna değer olacaktır eğer.

Bu bir (hatta 1800 satırları) dahil bu kadar yavaşlatmak verebilecek çok şaşırtıcıdır. Öncelikle, belki gereksiz bir işlem yapıyor değil emin olmak için kod üzerinde görünmelidir. Aslında dosyasını ayrıştırma böyle bir darboğaz olmamalıdır.

O dedi, PHP programlarının bir çok önemli darboğazları biridir içerir. Daha küçük (sadece ihtiyacınız olanı içerir hangi) dosyaları, ya da (muhtemelen çok daha kolay), PHP'nin __autoload işlevini kullanmak bir dizi içine ya kodunuzu üstlenmeden düşünebiliriz. Bu nedenle bir statik sınıf içine fonksiyonları koymak gerekiyordu, var olmayan bir sınıf bakın her otomatik olarak adlandırılan bir işlevdir. örneğin:

// include/ajaxlib.php
class AjaxLib {
    public static function renderResponse($data) {
        // whatever
    }
}

// a common include file:
function __autoload($class) {
    require 'include/' . strtolower($class) . '.php';
}

// your code:
AjaxLib::renderResponse($foo);

Ben 1800 line dosya bir sorun olmak hayal değil, sadece bir ben 1870 satır benim tüm sayfaları dahil birçok sınıflarının, bu bir sorun neden olur hiç. Eğer dahil dosyada herhangi bir dosya veya ağ erişimi var mı?