Laravel Türkiye Forumları
Yükleniyor...
Bu site en iyi modern tarayıcılarda Javascript etkinken görüntülenir.
Sayfayı tamamen yüklerken bir şeyler ters gitti.
compiled.php dosyasını nasıl bilirsiniz?
zafer
Merhaba,
Geçen gün larevel ile bayağı boğuştuktan sonra, laravelin neler yaptığını çözmeye karar verdim. Önce herşey iyi başladı, dosya üzerinden devam ederek echo komutları ile çalışmayı izliyordum. Sizinde bildiğiniz üzere laravel start dosyasında şöyle bir çağrı yapıyor.
$app = new Illuminate\Foundation\Application;
Bu çağrıya göre bu adresteki Application sınıfının çalışması gerekirken bu adresteki sınıfa hiç bir çağrı olmadığını gördüm. Yaklaşık 10-15 dakikalık bir çabadan sonra laravelin çağrılarını compiled.php içindeki Applicatiıon sınıfına yaptığını anladım.
Benim sormak istediğim compiled.php tam olarak ne işe yarıyor. Bildiğim kadarıyla PHP yorumlanan bir dil, zaten compiled.php dosyasının içindede Application dosyasındaki kodların aynısı var gibi görünüyor. Dolayısıyla compiled.php dosyasının avantajı nedir? Bu dosyayı kaldırıp direk orjinal Application dosyasından çalışsam fark ne olur? (artisan clear-compiled ile bu mümkün)
angelside
compiled.php dosyası laravelin ve bizim tanımlayabileceğimiz bazı dosyaları birleştirip tek dosyada tutuyor ve bu dosya mevcut ise include edilip diğer bazı işlevler atlanabiliyor.
Geliştirme aşamasında compiled.php dosyası hataların doğru yorumlanmasını engelleyebiliyor. Geliştirme sırasında bu dosyayı kullanmıyorum, bir şekilde oluştuysa da siliyorum.
Ürün/production aşamasında ise, şöyle bir teori kurabilirim; birden fazla dosya include etmek ile tek dosya include etmek arasında performans bakımından bir fark olacaktır, ne kadar fark olacağı ve compiled.php dosyasının boyutu ile ilgilenmiyorum, o hesabı yampıyorum şu an bu konuda. Bir de compiled.php dosyasını php opcache ile ram e aldığımızı varsayarsak, oldukça fazla bir performans artışı ile karışılabiliriz. Laravel forumlarında, özellikle eski arşiv forumunda "laravel yavaş" gibi konularda genelde compiled.php dosyasının oluşturulması ve opcache öneriliyordu zaten.
zafer
Haklısın angelside, geliştirme esnasında cidden sıkıntı oluyor. Zaten bende
artisan clear-compiled
ile bu dosyayı kaldırdım.
Ancak söylediğin gibi çalışma ortamında (production) kodların tek dosyada birleştirilmesi ve onunda ram bellekte tutulması gerçekten iyi bir hız kazancı sağlar diye düşünüyorum. Ben dosya ismini compiled diye görünce PHP yorumlanan bir dil bu dosya neyin derlenmiş (compiled) hali diye düşündüm, Ancak senin yazdıklarını okuyunca olay açıklığa kavuştu.
Bu arada ben geliştirme ortamında bu dosyayı
artisan clear-compiled
komutu ile kaldırdım. Dosyaları çalışma ortamına taşıdığında bu dosyayı nasıl eklerim? Yada sistemi nasıl compiled.php üzerinden çalışır hale getirebilirim?
angelside
"php artisan optimize" komutu compiled.php dosyasını yeniden oluşturur. Şu adreste daha detaylı bilgiler mevcut:
http://laravel-recipes.com/recipes/60
Laravel Türkiye Forumları, ücretsiz forum uygulaması
Flarum
ile yapılmıştır.