I'm running nginx and php5.2 as fastcgi on Ubuntu Karmic (9.10). I'm using Capistrano to deploy my code (yes, that's right, even though its PHP). The issue I'm having is that every once in a while after deploying I get a white screen of death or an error such as "XYZ method already defined". It's always something different, and I'm thinking it has something to do with the fact that the opcode cache is not being refreshed after I deploy my new code.

The current fix is to just run /etc/init.d/php-fastcgi restart after every deploy, but I'd prefer to not do this as it may be dropping connections for some users while the fastcgi processes restart.

Does anyone have any ideas on how to overcome this problem? Would increasing the xcache memory allotted help? I tried APC before and remembered getting similar errors, is there a way to use APC with some altered configuration that would help me get around this issue?

Here is my xcache.ini file for reference:

# configuration for php Xcache module

[xcache-common]
;; install as zend extension (recommended), normally "$extension_dir/xcache.so"
zend_extension = /usr/lib/php5/20060613/xcache.so

[xcache.admin]
xcache.admin.enable_auth = On
# Configure this to use admin pages
; xcache.admin.user = "mOo"
; xcache.admin.pass = md5($your_password)
; xcache.admin.pass = ""

[xcache]
; ini only settings, all the values here is default unless explained

; select low level shm/allocator scheme implemenation
xcache.shm_scheme =        "mmap"
; to disable: xcache.size=0
; to enable : xcache.size=64M etc (any size > 0) and your system mmap allows
xcache.size  =                16M
; set to cpu count (cat /proc/cpuinfo |grep -c processor)
xcache.count =                 1
; just a hash hints, you can always store count(items) > slots
xcache.slots =                8K
; ttl of the cache item, 0=forever
xcache.ttl   =                 0
; interval of gc scanning expired items, 0=no scan, other values is in seconds
xcache.gc_interval =           0

; same as aboves but for variable cache
xcache.var_size  =            0M
xcache.var_count =             1
xcache.var_slots =            8K
; default ttl
xcache.var_ttl   =             0
xcache.var_maxttl   =          0
xcache.var_gc_interval =     300

xcache.test =                Off
; N/A for /dev/zero
xcache.readonly_protection = Off
; for *nix, xcache.mmap_path is a file path, not directory.
; Use something like "/tmp/xcache" if you want to turn on ReadonlyProtection
; 2 group of php won't share the same /tmp/xcache
; for win32, xcache.mmap_path=anonymous map name, not file path
xcache.mmap_path =    "/dev/zero"


; leave it blank(disabled) or "/tmp/phpcore/"
; make sure it's writable by php (without checking open_basedir)
xcache.coredump_directory =   ""

; per request settings
xcache.cacher =               On
xcache.stat   =               On
xcache.optimizer =           Off

[xcache.coverager]
; per request settings
; enable coverage data collecting for xcache.coveragedump_directory and xcache_coverager_start/stop/get/clean() functions (will hurt executing performance)
xcache.coverager =          Off

; ini only settings
; make sure it's readable (care open_basedir) by coverage viewer script
; requires xcache.coverager=On
xcache.coveragedump_directory = ""
link|improve this question
feedback

1 Answer

Same case for me, like you I think it's related to Xcache and maybe the fact that capistrano create a symlink for the current version.

Did you find a workaround since you posted?

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.