gpt4 book ai didi

PHP flock() - 背后是什么?

转载 作者:可可西里 更新时间:2023-11-01 13:23:42 26 4
gpt4 key购买 nike

折腾了PHP源码半个小时后,我放弃了。 :P 问题是 - PHP flock() 函数调用在 Gentoo Linux 系统上归结为什么系统调用?我遇到了一些问题(比如 block-for-30-seconds-in-every-one-of-20-loop-iterations 之类的问题)我想知道为什么是这样的。

最佳答案

// example: $stream = fopen(<strong>FILE</strong>, 'rb') or die('???');
$md = stream_get_meta_data($stream);
echo $md['wrapper_type'];<br/>
flock($stream);
如果打印 plainfile 那么对 php 函数 flock() 的调用由调用 flock() 的 php_stdiop_set_option(...) 处理。根据 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) {                return -1;            }            if ((zend_uintptr_t) ptrparam == PHP_STREAM_LOCK_SUPPORTED) {                return 0;            }            if (!flock(fd, value)) {                data->lock_flag = value;                return 0;            } else {                return -1;            }            break;

关于PHP flock() - 背后是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1001732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com