아래 코드에서 파일을 여는 중 오류가 발생하는 이유에 대해 조언 해 줄 수 있습니까? 오류는 25 번째 스레드의 9 번째 반복 과정의 절반 정도에서 시작되며 "너무 많은 파일 열기"오류가 발생합니다. 이 오류는 스레드에서 실행 중이고 DBI 연결/연결 끊기가 사용되는 경우에만 발생합니다. 열려있는 파일 수에 영향을 미치지 않아야합니까? 나는 Perl에 상당히 익숙하다. 그래서 내가 이상한 짓을했다면 확실하지 않다. 이것은 Perl 5.8.8에 있습니다. 당신이 서브 루틴에서 i와 $에게 $ J를 전역 변수를 사용하고 있는지Perl - DBD를 사용할 때 너무 많은 파일 오류가 발생했습니다.
use warnings;
use strict;
이 당신을 말할 것이다 : 솔라리스 10
use threads();
use DBI;
use DBD::Oracle;
my $thrds=25;
my $iter=10;
my @threads;
for (my $j=0; $j<$iter; $j++) {
&start($j);
}
sub start {
my $k=$_[0];
for (my $i=0; $i<$thrds; $i++) {
$threads[$i] = threads->new(\&RunThread,$k, $i);
}
for (my $i=0; $i<$thrds; $i++) { $threads[$i]->join; }
}
sub RunThread {
my $dbh = DBI->connect("dbi:Oracle:lnrmsd9.world", "rms_reader", "rms_reader") or die "failed connect";
my ($x, $y)[email protected]_;
open (my $fh, ">/tmp/da") or die "failed $! at iter $x thread $y";
close ($fh);
$dbh->disconnect;
}
편집기에있는 작은 바이너리 아이콘은 코드를 붙여 넣기위한 것입니다. (마크 업 도움말 가이드를 참조하십시오.) – Ether
나는 그것을 사용했는데 어떤 이유로 작동하지 않았다. 어쨌든, 이제 OK, 감사 –