在与PHP源代码搏斗了半个小时之后,我放弃了。 :P问题是-在Gentoo Linux系统上,PHP flock()函数调用可以归结为哪个系统调用?我遇到了一些问题(例如每20个循环迭代中有30秒阻塞的问题),我想知道为什么会这样。

最佳答案

// example: $stream = fopen(FILE, 'rb') or die('???');
$md = stream_get_meta_data($stream);
echo $md['wrapper_type'];
flock($stream);
如果此命令输出纯文件,则对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(...):

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

10-12 06:44