Consumer içinde twig cache kapatma

62 views
Skip to first unread message

Selim Can CABA

unread,
Sep 9, 2017, 6:04:31 AM9/9/17
to Symfony 2 Turkish Users
Merhabalar,

RabbitMQ Consumer içinde eğer env dev ise bazı değişiklikler yapıyorum bunlara ek olarak twig cache ini kapatmak istiyorum ki her değişiklikte consumer ı yeniden açmam gerekmesin. Bunun için service containerdan gelen twig objesinin cache ini kapatmayı ve debug ını açmayı denedim fakat bir türlü cache kapanmadı. Bu konu hakkında önerisi olan var mı acaba?

Teşekkürler

Osman Ungur

unread,
Sep 11, 2017, 3:59:11 AM9/11/17
to symfon...@googlegroups.com
Merhaba,

RabbitMQ consumerlar surekli acik kalan (belirli bir sure icinde siz kapatmadikca ve kendisi otomatik olarak dusmedikce) prosesler oldugundan cache degisikliklerinden ve kod degisikliklerinden etkilenmezler (Bu durum uzun sureli calisan her php kodu icin gecerlidir). Composer autoloader her sinifi bir defa autoload eder. Siz consumeri kapatana dek hafizada ne varsa o kullanilir.

Bununla ilgili yapabileceginiz pek birsey yok. RabbitMQ prosesi blocking oldugundan kod degisikliginde tetiklemekte pek mumkun degil. Tek onerim prosesin kisa surede olmesini saglamaniz veya elle kapatmaniz.

Kucuk bir not: Productionda deployment yaptiginizda da kod degisimlerinde workerlarin kapatilip yeniden acilmasi gerektigini unutmayin. Ben sahsi deneyimlerimde workerlari ayakta tutmak icin supervisord kullandim. supervisord ile bu prosesleri toplu sekilde kapatip yeniden calistirmak oldukca kolay.

Sevgiler.
O.
> --
>
> ---
> Bu e-postayı Google Grupları'ndaki "Symfony 2 Turkish Users" adlı gruba abone olduğunuz için aldınız.
> Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için symfony-2-tr...@googlegroups.com adresine e-posta gönderin.
> Daha fazla seçenek için, https://groups.google.com/d/optout adresiniz ziyaret edin.

Selim Can CABA

unread,
Sep 12, 2017, 9:55:25 AM9/12/17
to Symfony 2 Turkish Users
Merhaba,

Cevabınız için çok teşekkürler.

Production dediklerinizi zaten yapıyorum, geliştirme yaparken consumer'a --env=dev veriyorum, kod tarafında da aşağıdaki gibi bir if var. Eğer twig cache'leri tekrar generate edebilseydi, email template te yaptığımız her değişiklik için consumer restart gerekmeycekti.

if ($this->kernel->getEnvironment() === 'dev') {
            $this->twig->setCache(false);
            $this->twig->enableDebug();
            $this->twig->enableAutoReload();
}



11 Eylül 2017 Pazartesi 10:59:11 UTC+3 tarihinde Osman Ungur yazdı:

Murat Çileli

unread,
Sep 13, 2017, 1:06:34 AM9/13/17
to Symfony 2 Turkish Users
Sorunuzu yanlış anlamadıysam eğer, config_dev.yml içine aşağıdaki satır eklemeniz yeterli.

twig:
    cache:  false

Selim Can CABA

unread,
Sep 14, 2017, 11:22:31 AM9/14/17
to Symfony 2 Turkish Users
Merhaba,

Cevabınız için teşekkürler.

Bu yazdığınızı da denemiştim maalesef işe yaramadı.

Twig_Environment class'ının loadTemplate methodunda gördüğüm kadarıyla template bir kez load edildikten sonra autoreload açıkta olsa mevcut cache'i kullanıyor.

Compile edilmiş template'lerin listesini loadedTemplates array'inde tutuyor. Bu array'e dışarıda erişebilseydik, sıfırlamayı deneyecektim fakat erişim yok.

Sanırım consumer'ı yeniden başlatmaktan başka bir çözüm yok şu an için.


13 Eylül 2017 Çarşamba 08:06:34 UTC+3 tarihinde Murat Çileli yazdı:

Ulugbek Miniyarov

unread,
Sep 15, 2017, 1:44:50 AM9/15/17
to Symfony 2 Turkish Users
Merhaba,

php consumer yerine https://github.com/ricbra/rabbitmq-cli-consumer buradaki golang ile yazılmış consumer starterı kullanmanızı tavsiye ederim.
kuyruğa bilgi geldiğinde php consumerını çağırıyor ve işi bitince kapatıyor, dolayısı ile belirttiğiniz sorunu görmezsiniz.
Enuygunda uzun süredir productionda kullanıyoruz ve hiç sorun yaşamadık. Bunun dışında old_sound bundle'ını kullanıyorsanız onun yerine enqueue bundle'ını tavsiye ederim.

Osman Ungur

unread,
Sep 15, 2017, 7:06:26 AM9/15/17
to symfon...@googlegroups.com
Selam Ulugbek, 

Verdigin kucuk taktik icin tesekkurler, bende bir goz atayim.

--

---
Bu iletiyi Google Grupları'ndaki "Symfony 2 Turkish Users" grubuna abone olduğunuz için aldınız.

Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için symfony-2-tr...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için https://groups.google.com/d/optout adresini ziyaret edin.

Selim Can CABA

unread,
Sep 15, 2017, 9:58:05 AM9/15/17
to Symfony 2 Turkish Users
Merhaba,

Önerileriniz için çok teşekkürler.

Fazla performans kaybı olmuyorsa çok mantıklı gözüküyor.

Evet, old_sound kullanıyorum, enqueue deneyeceğim.

15 Eylül 2017 Cuma 08:44:50 UTC+3 tarihinde Ulugbek Miniyarov yazdı:

Ulugbek Miniyarov

unread,
Sep 15, 2017, 10:26:35 AM9/15/17
to symfon...@googlegroups.com
Selamlar,

Old sound'tan enqueue'ya geçiş için şu blogu da okumanızı tavsiye ederim.


Sincerely,
Ulugbek Miniyarov
Software Architect

--

---
Bu iletiyi Google Grupları'ndaki "Symfony 2 Turkish Users" grubunda bir konuya abone olduğunuz için aldınız.
Bu konunun aboneliğinden çıkmak için https://groups.google.com/d/topic/symfony-2-tr/A44hpRuxtvQ/unsubscribe adresine gidin.
Bu grubun ve tüm konularının aboneliğinden çıkmak için symfony-2-tr+unsubscribe@googlegroups.com adresine e-posta gönderin.
Reply all
Reply to author
Forward
0 new messages