Perl flock不适用于CGI

时间:2011-09-14 20:04:13

标签: perl locking cgi

(在运行以下脚本之前,将/ home / porton / t / MOVE替换为您有权创建或删除的文件的路径。)

当我从命令行启动此脚本并在10秒内再次从命令行启动相同的脚本时,它会打印出我期望的内容:

Flock: 1

Flock: 0

相应。

但是,当我运行两次(请求时间间隔小于10秒)作为CGI,http://test.localhost/cgi-bin/test2.pl打印

Flock: 1

两个CGI请求。

错误是什么?从CGI运行时为什么它以不同的意外方式运行?

#!/usr/bin/perl

use strict;
use warnings;

use Fcntl qw(:flock);

print "Content-Type: text/plain\n\n";

open(my $lock_fh, '>', "/home/porton/t/MOVE");

print "Flock: " . flock($lock_fh, LOCK_EX|LOCK_NB) . "\n";

sleep 10;

1 个答案:

答案 0 :(得分:3)

您确定这两个请求是并行运行的吗?它们可以按顺序处理,即第二个请求可以在第一个请求完成后以及锁定释放后处理。