有没有一种可移植的方法可以在flock()上放置超时?
flock()
是 PHP 的可移植咨询文件锁定功能。他们明确地宣传它甚至可以在Windows下工作:
flock() 允许您执行一个简单的读取器/写入器模型,该模型几乎可以在每个平台上使用(包括大多数Unix衍生产品甚至Windows)。
我想在阻塞上放置一个便携式超时(并且没有忙于等待该选项的工作)。在UNIX中,这可以通过设置警报来实现,该警报将发送:flock()
LOCK_NB
SIGALRM
pcntl_signal(SIGALRM, function() {});
pcntl_alarm(3);
try {
if (!flock($handle, LOCK_EX)) {
throw new \Exception("Timeout");
}
} finally {
pcntl_alarm(0);
pcntl_signal_dispatch();
pcntl_signal(SIGALRM, SIG_DFL);
}
有没有一种便携式方法可以对阻塞进行超时?如果是这样,如何?flock()