(在运行以下脚本之前,将/ 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;
答案 0 :(得分:3)
您确定这两个请求是并行运行的吗?它们可以按顺序处理,即第二个请求可以在第一个请求完成后以及锁定释放后处理。