Надо было просто потратить на 5 минут больше и разобраться чуток, вместо того чтобы сходу бросаться патчить configure (который генерится из config.m4 и не предназначен для человека).Касательно eAccelerator мне кажется стоило бы начать с фикса багов. Вот такой баг есть: mod_fcgid +eAccelerator + SHM. У меня сборка 0.9.6.1 для PHP 5.3.8 крутиться на debian, так там он использует mmap для скриптов и не юзает ipcs (видно по strace), но зачем то еще и 32Мб от SHM откусывает.
тут даже и возможные значения перечислены.$ ./configure --help | grep shm
--with-eaccelerator-shm-type eAccelerator shared memory type: sysvipc, mmap_anon, mmap_zero, mmap_file
(phpinfo())
Shared memory type mmap_anon
В оригинальном EA её нет.Надо было просто потратить на 5 минут больше и разобраться чуток, вместо того чтобы сходу бросаться патчить configure (который генерится из config.m4 и не предназначен для человека).
На самом деле, всё более чем просто. У EA есть в configure опция:
А это наиболее предпочитаемый вариант?Пересобираем с ./configure --with-eaccelerator-shm-type=mmap_anon и всё работает:
# ./configure --with-php-config=/opt/php/5.3.8/bin/php-config --with-eaccelerator-shm-type=sysvipc --with-eaccelerator-sem-type=sysvipc > log.txt
# grep -i semaphores log.txt
checking for eAccelerator semaphores type... sysvipc
checking for spinlock semaphores support... yes
checking for pthread semaphores support... yes
checking for pthread rwlock semaphores support... yes
checking for posix semaphores support... no
checking for sysvipc semaphores support... no
checking for fcntl semaphores support... yes
checking for flock semaphores support... yes
checking for semaphores type...
# php -i | grep sem
Configure Command => './configure' '--prefix=/opt/php/5.3.8' '--with-config-file-path=/opt/php/5.3.8/etc/' '--with-config-file-scan-dir=/opt/php/5.3.8/etc/conf.d/' '--enable-fpm' '--with-fpm-user=php-fpm' '--with-fpm-group=php-fpm' '--enable-bcmath' '--enable-calendar' '--enable-exif' '--enable-ftp' '--with-gd' '--with-freetype-dir' '--with-jpeg-dir' '--enable-gd-native-ttf' '--enable-gd-jis-conv' '--enable-mbstring' '--enable-zip' '--with-pcre-regex' '--with-zlib' '--with-mysql' '--with-mysqli' '--with-pgsql' '--with-mcrypt' '--with-gettext' '--with-imap' '--with-kerberos' '--with-imap-ssl' '--enable-intl' '--with-openssl' '--with-pdo-mysql' '--enable-shmop' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--without-pear'
sysvsem
# tail -n +8 ~/ou_1 | head -n 17
18744 read(4, "\1\4\0\1\0\0\0\0", 8) = 8
18744 setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={60, 0}}, NULL) = 0
18744 rt_sigaction(SIGPROF, {0x76cf00, [PROF], SA_RESTORER|SA_RESTART, 0x7f772ea37480}, {0x76cf00, [PROF], SA_RESTORER|SA_RESTART, 0x7f772ea37480}, 8) = 0
18744 rt_sigprocmask(SIG_UNBLOCK, [PROF], NULL, 8) = 0
18744 rt_sigaction(SIGSEGV, {0x7f772ba98c80, [SEGV], SA_RESTORER|SA_RESTART, 0x7f772ea37480}, {SIG_DFL, [SEGV], SA_RESTORER|SA_RESTART, 0x7f772ea37480}, 8) = 0
18744 rt_sigaction(SIGFPE, {0x7f772ba98c80, [FPE], SA_RESTORER|SA_RESTART, 0x7f772ea37480}, {SIG_DFL, [FPE], SA_RESTORER|SA_RESTART, 0x7f772ea37480}, 8) = 0
18744 rt_sigaction(SIGBUS, {0x7f772ba98c80, [BUS], SA_RESTORER|SA_RESTART, 0x7f772ea37480}, {SIG_DFL, [BUS], SA_RESTORER|SA_RESTART, 0x7f772ea37480}, 8) = 0
18744 rt_sigaction(SIGILL, {0x7f772ba98c80, [ILL], SA_RESTORER|SA_RESTART, 0x7f772ea37480}, {SIG_DFL, [ILL], SA_RESTORER|SA_RESTART, 0x7f772ea37480}, 8) = 0
18744 rt_sigaction(SIGABRT, {0x7f772ba98c80, [ABRT], SA_RESTORER|SA_RESTART, 0x7f772ea37480}, {SIG_DFL, [ABRT], SA_RESTORER|SA_RESTART, 0x7f772ea37480}, 8) = 0
18744 open("/www/rurbox.ru/public/test.php", O_RDONLY) = 5
18744 fstat(5, {st_mode=S_IFREG|0644, st_size=4847, ...}) = 0
18744 getcwd("/www/rurbox.ru/public", 4095) = 22
18744 chdir("/www/rurbox.ru/public") = 0
18744 setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={30, 0}}, NULL) = 0
18744 stat("/www/rurbox.ru/public/test.php", {st_mode=S_IFREG|0644, st_size=4847, ...}) = 0
18744 write(2, "EACCELERATOR hit: \"/www/rurbox.ru/public/test.php\"\n", 51) = 51
18744 close(5) = 0
# grep -i sem config.log
$ ./configure --with-php-config=/opt/php/5.3.8/bin/php-config --with-eaccelerator-shm-type=sysvipc --with-eaccelerator-sem-type=sysvipc
configure:4462: checking whether to include eAccelerator disassembler
configure:4581: checking for eAccelerator semaphores type
configure:5106: checking whether union semun is defined in sys/sem.h
| #include <sys/sem.h>
| union semun arg;
| semctl(0, 0, 0, arg);
| #define MM_SEM_NONE
configure:5402: checking for spinlock semaphores support
configure:5429: checking for pthread semaphores support
configure:5454: checking for pthread rwlock semaphores support
configure:5479: checking for posix semaphores support
/tmp/mm.sem.WIfgtn: No such file or directory
| #define MM_SEM_POSIX
| #define MM_TEST_SEM
configure:5505: checking for sysvipc semaphores support
| #define MM_SEM_IPC
| #define MM_TEST_SEM
configure:5541: checking for fcntl semaphores support
configure:5566: checking for flock semaphores support
configure:5636: checking for semaphores type
configure:5645: error: Semaphores type 'sysvipc' is not available
CONFIGURE_COMMAND=' '\''./configure'\'' '\''--with-php-config=/opt/php/5.3.8/bin/php-config'\'' '\''--with-eaccelerator-shm-type=sysvipc'\'' '\''--with-eaccelerator-sem-type=sysvipc'\'''
CONFIGURE_OPTIONS=' '\''--with-php-config=/opt/php/5.3.8/bin/php-config'\'' '\''--with-eaccelerator-shm-type=sysvipc'\'' '\''--with-eaccelerator-sem-type=sysvipc'\'''
# php -m | grep sys
sysvmsg
sysvsem
sysvshm
configure:5106: checking whether union semun is defined in sys/sem.h
configure:5126: cc -c -g -O2 conftest.c >&5
conftest.c: In function 'main':
conftest.c:37:15: error: storage size of 'arg' isn't known
configure:5126: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| #define HAVE_MPROTECT 1
| #define WITH_EACCELERATOR_CRASH_DETECTION 1
| #define WITH_EACCELERATOR_OPTIMIZER 1
| #define COMPILE_DL_EACCELERATOR 1
| #define HAVE_EACCELERATOR 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SCHED_H 1
| /* end confdefs.h. */
|
| #include <sys/types.h>
| #include <sys/ipc.h>
| #include <sys/sem.h>
|
| int
| main ()
| {
|
| union semun arg;
| semctl(0, 0, 0, arg);
|
| ;
| return 0;
| }
configure:5135: result: no
...
configure:5505: checking for sysvipc semaphores support
configure:5517: cc -o conftest -g -O2 conftest.c >&5
In file included from conftest.c:33:0:
/root/install/php-5.3.8/ext/tony2001-eaccelerator/mm.c: In function 'mm_init_lock':
/root/install/php-5.3.8/ext/tony2001-eaccelerator/mm.c:428:22: error: 'EA_USERID' undeclared (first use in this function)
/root/install/php-5.3.8/ext/tony2001-eaccelerator/mm.c:428:22: note: each undeclared identifier is reported only once for each function it appears in
configure:5517: $? = 1
configure: program exited with status 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| #define HAVE_MPROTECT 1
| #define WITH_EACCELERATOR_CRASH_DETECTION 1
| #define WITH_EACCELERATOR_OPTIMIZER 1
| #define COMPILE_DL_EACCELERATOR 1
| #define HAVE_EACCELERATOR 1
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SCHED_H 1
| #define HAVE_BUILTIN_ATOMIC 1
| #define MM_SHM_IPC 1
| #define EAC_SHM_TYPE "sysvipc"
| /* end confdefs.h. */
| #define MM_SEM_IPC
| #define MM_TEST_SEM
| #include "/root/install/php-5.3.8/ext/tony2001-eaccelerator/mm.c"
|
configure:5527: result: no
./configure "--with-php-config=/opt/php/5.3.8/bin/php-config --with-eaccelerator-shm-type=sysvipc --with-eaccelerator-sem-type=sysvipc --with-eaccelerator-userid=0"
Нет, не путаю. Я достаточно хорошо представляю разницу. Формулирую возможно не везде точно или перепрыгиваю местами с одного на другое. Но точно не путаю. Инфа 146%-ая!alekciy, мне кажется, ты в своих рассуждениях путаешь две разные вещи - shared memory и semaphores
а так жеeaccelerator.cache_dir
This directory is used for the disk cache. eAccelerator stores precompiled code, session data, content and user entries here. The same data can be stored in shared memory (for quicker access). The default value is "/tmp/eaccelerator".
чего то сбивают меня с толку. Может я не правильно понимаю "sessions" в контексте eAccelerator - может это совсем другие сессионые данные? Если есть ссылки для чтения - поделитесь, а то с гугл со мной не дружит по этому вопросу и выдает одни и те же настройки.eaccelerator.keys | session | content
These settings control the places eAccelerator may cache user content. Possible values are......
....eaccelerator.keys = "shm_and_disk" eaccelerator.sessions = "shm_and_disk" eaccelerator.content = "shm_and_disk"
Спасибо за пояснение - теперь в голове все на месте!Это указывает, где eaccelerator будет хранить данные (в памяти или/и на диске в указанной директории), _если_ его сделают хранителем этих сессий.
[11-Sep-2012 02:04:40] WARNING: [pool site2] child 8577 said into stderr: "EACCELERATOR hit: "/www/site2/wp-includes/plugin.php""