Ne Apache / PHP / Sunucu ayarları başka bir sunucudan bir CodeIgnitor modeli örnekleme hızını etkileyebilir?

0 Cevap php

Benim apps birinde sayfalarından biri benim yerel sınama sunucusuna göre web sunucusu üzerinde çok yavaş çalışır. Orada bunu açıklayabilir ortamlarda bazı radikal farklılıklar vardır, ama o daha çözülebilir çözüm için umut ediyorum.

Server:
Solaris 10
Apache 2.2.9 Prefork
PHP 5.2.6
The server is run on a cluster of 4 not-even-a-year-old Sun boxes, and shouldn't be having any issues performance-wise.

Local Test Server:
Windows XP
Apache 2.2.14 WinNT
PHP 5.3.1
This is actually my own desktop - a decent machine, but should pale in comparison to the Sun boxes.

Uygulama CodeIgniter ile yazılmış, ve ben Modeli yavaşlama izlemek için :: Modeli içinde () profil özellikleri kullandım. Örneğin, Model :: Model () sunucuda yerel ve 0.0045s 0.0006s çalışır. Eğer bir sayfada yüzlerce model yükleme olduğunuzda, bu açıkça bir konudur.

Bu, potansiyel olarak, daha yakından CodeIgniter ile ilgili olabilir gibi ben ServerFault burada bu çapraz gönderdiniz.

Yerel itibaren, sayfa yüklemek için 2-3 saniye sürer. Sunucudan, 11-15 bulunuyor.

Yerel, ancak uzaktan değil modüller:

  • mod_actions
  • mod_asis
  • mod_dav mod_dav_fs
  • mod_dav_lock
  • mod_isapi mod_autoindex_color

Uzaktan değil, yerel modüller:

  • mod_authn_dbm
  • mod_authn_anon
  • mod_authz_dbm
  • mod_authz_owner
  • mod_cache
  • mod_mem_cache
  • mod_deflate
  • mod_authnz_ldap
  • mod_ldap modülü
  • Eğer yukarıdaki
  • mod_expires
  • mod_unique_id
  • mod_autoindex
  • mod_suexec
  • mod_userdir
  • libphp5
  • mod_dtrace
  • mod_security2

Edit:

Ben giderek aşağı benim kıyaslama hareket ettik, seviyesine göre seviyesi ve en büyük tutarsızlık buldum bu kod yığın içinde yatıyor (CodeIgniter işlevi Model :: _assign_libraries olduğunu ve bir modelin yapıcısı sırasında denir):

    $time = microtime()*1000;
    foreach (array_keys(get_object_vars($CI)) as $key)
    {
        if ( ! isset($this->$key) AND $key != $this->_parent_name)
        {
            // In some cases using references can cause
            // problems so we'll conditionally use them
            if ($use_reference == TRUE)
            {
                $this->$key = NULL; // Needed to prevent reference errors with some configurations
                $this->$key =& $CI->$key;
            }
            else
            {
                $this->$key = $CI->$key;
            }
        }
    }
    if (get_class($this) == 'SeatType')
        echo sprintf('%.5f ms|', (microtime()*1000 - $time));

Yerel olarak, bu 0.48ms her tekrarında etrafında yazdırır. Kümede, bu 3.9ms her tekrarında etrafında yazdırır.

Ben bu sorun Apache / PHP dışında olup olmadığını merak etmeye başlıyorum - Ben php.ini ve htconf dosyaları benim yerel sunucu ve (mod_dtrace çıkardıktan sonra ve başka hemen hemen hiçbir şey) hem kopyalanamaz, aslında performans artışı gördüm. (Yukarıdaki çek artık yerel olarak 0,2 ms yazdırır.)

0 Cevap