Скопление PHP () - что находится под капотом?

Другой вариант будет:

mockStore.Expect(x => x.Rollback()).Repeat.Never();
6
задан Vilx- 16 June 2009 в 14:08
поделиться

4 ответа

Если я не понимаю, о чем вы спрашиваете, PHP flock () - это вызов системной функции Unix flock () в Gentoo . У них идентичная семантика.

0
ответ дан 17 December 2019 в 04:51
поделиться

Используете ли вы его на сетевом или подключенном диске? Я не удивлюсь, если вы столкнетесь с тупиком , и некоторые из комментариев в документации говорят об этом.

Документация для flock .

0
ответ дан 17 December 2019 в 04:51
поделиться

http://www.opengroup.org/onlinepubs/009695399/functions/fcntl. html

/etc/standard/flock_compat.c [line 66]    
ret = fcntl(fd, operation & LOCK_NB ? F_SETLK : F_SETLKW, &flck);
2
ответ дан 17 December 2019 в 04:51
поделиться

// example: $stream = fopen(FILE, 'rb') or die('???');
$md = stream_get_meta_data($stream);
echo $md['wrapper_type'];
flock($stream);
, если это напечатает plainfile , тогда вызов функции php flock () будет обрабатываться php_stdiop_set_option (...) который вызывает flock (). В зависимости от того, был ли PHP скомпилирован с HAVE_FLOCK или нет, это может быть системный вызов flock () или функция, определенная в flock_compat.c, которая использует fcntl () . В моей системе gentoo PHP был скомпилирован с HAVE_FLOCK.

main / streams / plain_wrapper.c @ static int php_stdiop_set_option (...):

  case PHP_STREAM_OPTION_LOCKING:
 if (fd == -1) {
 возврат -1;
 }

 if ((zend_uintptr_t) ptrparam == PHP_STREAM_LOCK_SUPPORTED) {
 возврат 0;
 }

 if (! flock (fd, value)) {
 data-> lock_flag = значение;
 возврат 0;
 } else {
 возврат -1;
 }
 break; 
3
ответ дан 17 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: