Neden) return false (apc_store istiyorsunuz?

9 Cevap php

Php.net üzerindeki belgeler APC yazar için başarısızlık nedenleri hakkında çok sivilceli. Senaryo ne tür bir çağrı () başarısız apc_store neden olur?

Orada mevcut disk alanı bol, ve hataları sivilceli. Bazen mağaza operasyon başarılı olur ve bazen de başarısız olacak.

9 Cevap

bellek (apc için ayrılan bellek, yani)

For php cli it needs to be enabled with another option: apc.enable_cli=On

Php cli ile aynı şeyler yürütürken gezgini çalışan, ama benim durumda bu çalışıyordu.

hata benim sorunum oldu (nedense ve kapalı), bu ahmakça:

http://pecl.php.net/bugs/bug.php?id=16814

işe apc almak için APC sürüm 3.1.2 'e geri dönmek vardır. hayır (apache 2, php 5.3 kullanarak, mac os 10.5 değilim) php.ini APC ayarları ile yardım etti işe yaramaz.

Benim için, bu test script 3.1.3p1 için 3.1.2 ve doğru / yanlış / doğru için 3 "doğruları" gösterdi

var_dump( apc_store('test', 'one') ); var_dump( apc_store('test', 'two') ); var_dump( apc_store('diff', 'thr') );

Ben tam aynı durum vardı.

Ben supervisord ile yönetilen Gearman İşçi, kullanarak, Cron Jobs kullanarak benim kod göç.

Her şey kırıldı. Şimdiye kadar önbelleklerini APC aracılığıyla işe almak, ve filebase önbelleğe alma kullanarak geri dönmek zorunda kaldı.

Sonunda ben cron işleri kullanarak zaman, ben yerine komut satırı yerine, wget ile her bir sayfayı yüklemek olacağını anladım. Bu fark, varsayılan olarak APC komut satırı üzerinden çalışmaz çünkü, komut satırı üzerinden benim PHP betikleri yüklemek istiyorsunuz işe yaramayacağını supervisord, geliyordu.

Düzeltme ....

apc.enable_cli=On

http://php.net/manual/en/apc.configuration.php

apc.ttl ve apc.user_ttl php.ini üzerinde ayarları:

Sıfır bu bırakarak yeni girişleri önbelleğe olmaz ise APC cache potansiyel bayat girdileri ile doldurmak anlamına gelir.

Depolama dizinine reddedildi disk alanı veya izni dışında?

Greg söylediklerime ek olarak, ben bir yapılandırma hatası bu neden olabilir eklemek istiyorum.

bu özel anahtar zaten varsa apc_store başarısız olur ve TTL süresi dolmadan önce onu yeniden yazmaya çalışıyoruz. Gerçekten başarısız yaptım, çünkü bu nedenle oldukça fazla yanlış dönüşünü göz ardı edebilirsiniz ama önbellek hala var. Bu etrafında almak istiyorsanız, bunun yerine apc_add kullanmaya başlayabilirsiniz. http://php.net/manual/en/function.apc-add.php

Ubuntu 10.04 ve Debian kararlı yüklü sürümünde bir hata var. Eğer bu sürümü ile paketini değiştirin: http://packages.debian.org/sid/php-apc (3.1.7) olması gerektiği gibi çalışır.