W moim mojologicznym kodzie perla obsługuję zadania utworzone i oglądane przez klienta zdalnego.Globals and Threads in Mojolicious za obsługę różnych ścieżek
Utrzymuję zadania w tablicy skrótów, która jest zmienną globalną.
Jest następnie używany w procedurach PUT "/ job/create" i GET '/ job/status'. Podczas dodawania nowego zlecenia za pomocą PUT "/ job/create" tablica pobiera rozszerzoną w podprogramie (zawiera 4 elementy w kodzie poniżej), , ale przy żądaniu statusu zleceń za pośrednictwem GET '/ job/status' lista zadań , tablica nie zawiera dodanych elementów (liczy 2 elementów).
Dzięki Jan
Oto kod:
#!/usr/bin/perl -w
use threads;
use threads::shared;
use Mojolicious::Lite;
use Mojo::JSON;
my (%record, %job1, %job2, %job3, @jobs) : shared;
%job1 = (id=>"id1");
%job2 = (id=>"id2");
%job3 = (id=>"id3");
push (@jobs, \%job1);
push (@jobs, \%job2);
app->config(hypnotoad => {listen => ['http://*:3000']});
put '/job/create' => sub {
my $self = shift;
my $obj = Mojo::JSON->decode($self->req->body);
my $id = $obj->{id};
%record = (id => $id);
push (@jobs, \%record); # test the global prefilled
push (@jobs, \%job3); # test the global locally filled
$self->render(text => "Created job id $id. Jobs count: " .
$#jobs);
};
get '/job/status' => sub {
my $self = shift;
my $out = "[";
for(my $i=0; $i<$#jobs+1; $i++) {
$out .= "{id:\"" . $jobs[$i]{id} . "\",";
$out .= "," if $i<$#jobs;
}
$out .= "]";
$self->render(text => "allJobsInfo($out). Num jobs: " . $#jobs);
};
app->start();
Dzięki za pomoc. W końcu przeszedłem do rozwiązania z CouchDB. Wygląda całkiem nieźle. :) –
Alternatywny 'perl twój.app daemon -l 'http: // *: 3000'' też może działać. [patrz Wbudowany serwer WWW] (http://mojolicio.us/perldoc/Mojolicious/Guides/Cookbook#Built2Din_web_server) – klekker