Yayınlamak üzerine APC Sorunları

5 Cevap php

Biz son zamanlarda APC bizim sunucularda etkin ettik, ve biz yeni bir kod veya değişiklikleri yayınlamak zaman zaman biz değiştirildi kaynak dosyaları kodunda olmayan hatalar atma başlamak, genellikle açıklayan Ayrıştırma hataları keşfetmek Varolmayan bir belirteç. Biz php -l hata günlükleri etkilenen söylüyorlar dosyalar üzerinde çalışan bu doğruladıktan. Genellikle bir yayınlanma sorunu giderir. Biz PHP 5.2.0 ve APC 3.01.9 kullanıyorsunuz. Benim sorum, Başkasının bu sorunu yaşamış olan, ya herkes bizim sorun nedir tanımıyor? Eğer öyleyse, bunu nasıl düzeltebilirim ya da biz bunu nasıl düzeltebilirim ki?

Düzenleme: Herhalde bizim yayıncılık süreci ile ilgili bazı ayrıntıları eklemek gerekir. Içeriği hazırlama sunucusundan rsync ile üretim sunucularına itiliyor. Bu işler rsync ile düzgün çalışmasına yardımcı olur dedi çünkü biz apc.stat_ctime sağladı. apc.write_lock varsayılan olarak açıktır ve bunu devre dışı değil. Ditto apc.file_update_protection.

5 Cevap

Bir parçası yayınlanan dosya okumak ve kırık olarak önbelleğe ediliyor gibi geliyor. apc.file_update_protection bu durdurmak yardımcı olmak için tasarlanmıştır.

php.ini içinde: apc.file_update_protection integer

apc.file_update_protection setting puts a delay on caching brand new files. The default is 2 seconds which means that if the modification timestamp (mtime) on a file shows that it is less than 2 seconds old when it is accessed, it will not be cached. The unfortunate person who accessed this half-written file will still see weirdness, but at least it won't persist.

Ben bu tür sorunları görmüyorum bir nedeni I (SVN ihracat ile) site yepyeni bir kopyasını itmek olduğunu: düzenlenmekte olan soruya ardından. Olduğunu tam olarak tamamlandıktan sonra bu (benim cevaba bakınız http://stackoverflow.com/questions/800294/how-to-get-started-deploying-php-applications-from-a-subversion-repository/820639#820639) Apache / mod_php'yi için vize hale gelir

Tabii ne olabilir başka bir şey, yerinde güncelleme ise, henüz tarih henüz başkalarına bağımlı dosyaları güncelleyerek edilebilir olmasıdır. Rsync sadece tek tek dosyalar için atomik güncelleştirmeleri değil değiştiriliyor tüm koleksiyonu / yükledi garanti edemez. Ben en-kütle siteyi upload düşünüyorum, ve ancak o zaman devreye bir başka nedendir.

APC preformıng veya doğru dosya istatistik bilgi almıyor gibi geliyor. Sen APC yapılandırma apc.stat doğru ayarlanmış olduğundan emin olmak için kontrol edebilir. Eğer yeni kod yayınlamak zaman apc_clear_cache() ile temizleyin önbellek zorlamak yapabileceği başka bir şey.

Eğer bir ayrıştırma hatası ile bir dosya olsun, geri çekilin, sonra repubish. Şimdi çalıştığı aynı dosya almak ve ayrıştırma hata ile dosya karşı yapılmış bir fark yok.

Ctime oluşturma zamanı anlamına gelir. Manuel tüm önbelleğe güncellemeleri yapmak her zaman temizlemek isteyeceksiniz.

Kolayca sunucu üzerinde bir yere apc.php komut dosyası koyarak, bunu yapabilirsiniz. Bu script istatistikleri önbelleğe ve tamamen önbelleğini düşmesine izin veren.

Komut APC ile birlikte geliyor.

Hopet his helps, Evert

Lütfen kodu arasında bir uyumsuzluk, ve kod önbelleğe alınmış sürümlerinin var çünkü bu muhtemelen oluyor.

Örneğin, APC User.php önbelleğe alınmış bir sürümü var, ama User.php veya Kullanıcı kullandığı verilere yapılan değişiklikler. Henüz sona ermemiş çünkü önbelleğe sürümü hala, hatta dağıtmak sonra çalışıyor.

Eğer dağıtırken APC önbellek girişlerini temizlerseniz, bu sorun kaybolur.