'Exit' çağıran bir php script performans etkileri nelerdir?

3 Cevap php

Bazı php scriptler çıkış birçok kez fark ettik. Bu (bir sonraki istek için gerekirse elbette başka başlatılacak) httpd / apache çocuğun bir çıkış zorlar gibi geliyor bana.

Ama CMS, bir sonraki isteği tüm init.php başlatma gerektirir, ve tabii ki sadece temizlik ve ilk etapta php başlangıç.

Bu php dosyaları genellikle başlamak gibi görünüyor

if ( !defined( 'SMARTY_DIR' ) ) {
include_once( 'init.php' );
}

hangi biri bir php süreç birden isteklerini hizmet edeceğini hayal olduğunu göstermektedir. Her komut çıkar Ama eğer, o her php / apache süreci tek isteği sadece hizmet verecek.

Herhangi bir performans düşünce ve bir süreç birden isteklere hizmet için izin (özellikle index.php vb gibi en çok sık olarak adlandırılan komut dosyaları) çıkış aramaların birçok kaldırarak güvenlik etkileri?

Teşekkürler, Peter

- EK -

Cevaplar için teşekkür ederim. Yani (php birden fazla istek asla hizmet edecek) ben geçen haftaya kadar başlangıçta düşünce budur, ben sadece (çünkü yol kuruldu yolu) bir komut seti olmuştur ama hala olabilecek bir yapılandırma değişkeni ayıklarken zaman Başka bir komut seti (bu yaklaşık 20 hit / sn ile bir web sunucusu üzerinde). Bu durumda, ben biraz farklı onun yapılandırması kurmak bir komut bir php çıkış çağrı yoktu. Ben (alternatif dizinde) bu bir komut dosyası php çıkış aramayı eklendiğinde Ama bu bir önceki yılında, ben bir css dizin değişken yanlışlıkla ayarlamak zorunda nedeniyle bulunduğumuz ana dizindeki tüm benim ana komut (içinde yaşadığı misconfiguration çözüldü sayfa yürütme). Tüm cevaplar kadar söylediklerine, php birden fazla istek hizmet asla çünkü Yani şimdi ben, yine kafam karıştı.

3 Cevap

exit Apache süreçlere hiçbir şey yapmaz (kesinlikle bir işçiyi öldürmek değil!). Bu sadece tarayıcıya sonuçları göndermek ve sonraki istek üzerine devam which'll PHP script yürütülmesine ve iadeler yürütme to Apache süreci sona erer.

Eğer bölümünden ettik Smarty kod çoklu istekleri hizmet veren bir PHP süreci ile ilgisi yoktur. Bir PHP komut dosyası alternatif başka bir senaryo dahil veya doğrudan erişilebilir olabilir yararlıdır - Sadece Smarty her zaman başlatılır sigortalanır.

Ben karışıklık include_once için ne geliyor düşünüyorum. PHP temelde hiçbir gerçek kalıcı sunucu nesneleri vardır bir "ortak-nothing" sistemidir. include_once ama bir kez web isteği başına, bir kez Apache çocuk başına anlamına gelmez.

Iki kez aynı dosyayı eklerseniz PHP bir kıl yumağı kadar kesmek olabilir. Örneğin belli bir isme sahip bir fonksiyon sadece bir kez tanımlanabilir. Bu insanlar ifndef-# define-# her dosyayı dahil kez deyim içeren eski C # bir kopyasını uygulamaya yol açtı. include_once bu için düzeltme oldu.

Çıkmak aramıyorsun bile eğer PHP komut dosyası halen herhangi oluşturulan HTML tarayıcınıza göndermek için web sunucusuna iade edilecektir hangi noktada yürütme, sonuna kadar gidiyor.

Çıkış anahtar kelime sizin iş yapılır PHP motoru için sinyal verir ve başka hiçbir işleme yer almak gerekiyor.

Ayrıca çıkış tipik hata işleme için kullanılan not ve akış kontrolü - içerir çıkarmadan olasılıkla başvurunuzu kıracak.