2011-09-14 5 views
0

CGI에서 작동하지 않습니다 (대체 아래 스크립트를 실행하기 전에/홈/porton/t/생성하거나 삭제 할 수있는 권리를 가지고 파일의 경로로 이동합니다.)펄 무리

을 나는이 스크립트를 시작하면 10 초 다시 명령 줄에서 동일한 스크립트를 시작하려면 명령 줄에서와 동안, 내가 무엇을 기대 인쇄 :

Flock: 1 

및 대응

Flock: 0 

합니다.

그러나 두 개의 CGI 요청을

Flock: 1 

를 인쇄 http://test.localhost/cgi-bin/test2.pl로 I는 CGI로 (요청 미만 10 초 시간 사이의 간격) 두 번 실행할 때.

무엇이 오류입니까? 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; 

답변

3

두 요청이 동시에 실행되고 있습니까? 이들은 순차적으로 처리 될 수 있는데, 즉 제 1 요청이 완료된 후 및 잠금이 해제 된 후에 제 2 요청이 처리 될 수있다.

+0

데비안 리눅스에서는 Apache/2.2.16을 사용합니다. 순차적으로 요청을 처리 할 수 ​​있을지 궁금합니다. 이것을 확인하는 방법? – porton

+3

스크립트가 잠기거나 잠자기 전후에 타임 스탬프를 출력하게하십시오. 순차적으로 실행중인 경우 "전/후/전/후"패턴을 얻게되며, 병렬이면 "전/전/후/후"패턴을 얻게됩니다. – CanSpice