1
POE Wheel 또는 비동기 프로세스를 사용하여 파일을 만들고 쓰는 방법을 찾는 데 문제가 있습니다. 큰 파일을 비 차단 방식으로 작성할 수 있기를 원합니다. 나는 예제를 찾고 있지만 어디서부터 시작해야할지 모른다.PERL POE ReadWrite 휠 파일 IO 예?
POE Wheel 또는 비동기 프로세스를 사용하여 파일을 만들고 쓰는 방법을 찾는 데 문제가 있습니다. 큰 파일을 비 차단 방식으로 작성할 수 있기를 원합니다. 나는 예제를 찾고 있지만 어디서부터 시작해야할지 모른다.PERL POE ReadWrite 휠 파일 IO 예?
따라서 파일 io에 대한 직접적인 예는 실제로 찾지 못했습니다. 그러나 필자는 내가 찾은 예제에서이 작업 코드를 파악할 수있었습니다. 나는 그것이 내가 원하는 것이라고 생각한다. 여기에 누군가를 추가하면 다른 사람이 의견을 나눌 때 도움이 될 것입니다. 또는 다른 누군가가 예제를 찾고 있다면이 예제를 볼 수 있습니다.
$self->{FILEIO_SESSION} = POE::Session->create(
inline_states => {
_start => sub {
my ($kernel, $heap) = @_[ KERNEL, HEAP ];
$kernel->alias_set($fileio_uuid);
$heap->{wheels}->{$fileio_uuid} = POE::Wheel::ReadWrite->new(
InputHandle => $infile_fh ,
OutputHandle => $outfile_fh,
Driver => POE::Driver::SysRW->new(),
Filter => POE::Filter::Line->new(),
InputEvent => 'readLineEvent',
ErrorEvent => 'errorEvent'
);
},
_stop => sub {
my ($kernel, $heap) = @_[ KERNEL, HEAP ];
print "Removing fileio session\n";
$kernel->alias_remove($fileio_uuid);
},
readLineEvent => sub {
my ($kernel, $heap, $input) = @_[ KERNEL, HEAP, ARG0 ];
print "read a line...writing to file...\n";
$heap->{wheels}->{$fileio_uuid}->put($input);
},
errorEvent => sub {
my ($kernel, $heap) = @_[ KERNEL, HEAP ];
print "Everything either went to hell or we got to the end. Shutting down...\n";
delete $heap->{wheels}->{$fileio_uuid};
$kernel->yield("_stop");
}
}
);
아주 좋은 문서를 사용할 수 있습니다 : http://search.cpan.org/~rcaputo/POE-1.354/lib/POE/Wheel/ReadWrite.pm – Matthias
감사합니다. 나는 그것을 조사하고 그것을하는 방법을 알아내는 것을 끝내었다. 결과 코드를 스레드에 게시했습니다. 당신이 링크 한 문서에있는 예제는 좋았지 만 fileio에서는 명확하지 않았습니다. STDIN에서 읽음을 언급 한 예가 있었지만 그 말은 나를 도와주었습니다. – dudeman