2012-02-23 12 views
5

मेरे Mojolicious perl कोड में मैं एक दूरस्थ क्लाइंट से बनाई गई और देखी गई नौकरियों को संभालता हूं।विभिन्न पथों को संभालने के लिए Mojolicious में ग्लोबल्स और थ्रेड

मैं नौकरी की एक श्रृंखला में नौकरियां रखता हूं, जो एक वैश्विक चर है।

यह तो '/ काम/स्थिति' '/ नौकरी/बनाएं' और प्राप्त PUT के संचालकों में प्रयोग किया जाता है। जब PUT साथ एक नया काम जोड़ने सरणी हो जाता है सबरूटीन में बढ़ाया '/ नौकरी/बनाने', लेकिन जब 'प्राप्त के माध्यम से स्थिति'/काम/स्थिति नौकरियों का अनुरोध '(यह नीचे दिए गए कोड में 4 तत्व शामिल हैं) नौकरियों की सूची में, सरणी में अतिरिक्त तत्व नहीं होते हैं (यह 2 तत्वों की गणना करता है)। के रूप में hypnotoad कांटा का उपयोग कर, नहीं धागे है,

#!/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(); 

उत्तर

6

यह वास्तव में काम नहीं करेगा:

धन्यवाद, जनवरी

यहाँ कोड है। मैं डेटाबेस या Cache::FastMmap जैसी किसी चीज़ में डेटा संग्रहीत करने का सुझाव देता हूं।

+0

सहायता के लिए धन्यवाद। अंत में, मैं कोच डीबी के साथ एक समाधान में चले गए। बहुत अच्छा बीटीडब्ल्यू लगता है। :) –

+0

वैकल्पिक 'perl your.app daemon -l' http: // *: 3000'' भी काम कर सकता है। [अंतर्निहित वेब सर्वर देखें] (http://mojolicio.us/perldoc/Mojolicious/Guides/Cookbook#Built2Din_web_server) – klekker

संबंधित मुद्दे