Sunday, 2 December 2012

Как PHP блокирует файл сессии?

Функция: static void ps_files_open(ps_files *data, const char *key TSRMLS_DC)

Это эксклюзивный лок: flock(data->fd, LOCK_EX);

Что это значит: man 2 flock

В strace процесс блокировки файла выглядит примерно так:

24365 open("/var/lib/php5/sess_8088bde28a87bfeddffd0ee807a4c87c", O_RDWR|O_CREAT, 0600) = 5
24365 flock(5, LOCK_EX)                 = 0    
24365 fcntl(5, F_SETFD, FD_CLOEXEC)     = 0    
24365 fstat(5, {st_mode=S_IFREG|0600, st_size=126, ...}) = 0
24365 lseek(5, 0, SEEK_SET)             = 0    
24365 read(5, "ticketlistview|s:6:\"active\";", 126) = 126

Источник: ext/session/mod_files.c php 5.3.3 Debian Squeeze.

No comments:

Post a Comment

Note: only a member of this blog may post a comment.