Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: How to sleep(), or use a while() in the background?

by Anonymous Monk
on May 07, 2016 at 03:41 UTC ( #1162426=note: print w/replies, xml ) Need Help??


in reply to How to sleep(), or use a while() in the background?

Classic strategy is the following things :) Proc::Background, Highlander: one instance at a time (Oct 00), Watching long processes through CGI (Aug 02) , Throttling your web server (Oct 00), Slow down the download! (Jan 98)

Also avoid shell interpolation

  • Comment on Re: How to sleep(), or use a while() in the background?

Replies are listed 'Best First'.
Re^2: How to sleep(), or use a while() in the background?
by taint (Chaplain) on May 07, 2016 at 08:23 UTC

      Well. After attempting every possible iteration, or combination available to me via Process::Simple, and the example listed in perlfaq8:

      system("cmd &")
      I have concluded that it is not possible to perform my desired action(s) with sleep. Where is it is called from the web (via a function that also delivers a web page).

      So don't try this at home, kids! ;-)

      --Chris

      λɐp ʇɑəɹ⅁ ɐ əʌɐɥ puɐ ʻꜱdləɥ ꜱᴉɥʇ ədoH

        what did you try, show the iterations ?

        Try something like

        #!/usr/bin/perl -- use strict; use warnings; ## use File::Spec; our $thisf = File::Spec->rel2abs( __FILE__ ); use Path::Tiny qw/ path /; our $thisfile = path( __FILE__ )->realpath; Main( @ARGV ); exit( 0 ); sub Main { my( $command, @args ) = @_; my %commands = ( deleteafter => \&DeleteAfter, indexpage => \&IndexPage, servefile => \&ServeFile, ); my $action = $commands{lc $command} || \&IndexPage; $action->( @args ); } sub IndexPage { require CGI; my( $q ) = CGI->new; if( my $temporaryfile = AllowedTemporaryFile( $q ) ){ BackgroundDeleteAfter( $temporaryfile, $seconds ); return ServeFile( $q, $temporaryfile ); } return ListFiles( $q ); } sub DeleteAfter { my $time = shift; close STDIN; close STDOUT; ## close STDERR; open STDERR ...; sleep $time; unlink($_) for @_; } sub BackgroundDeleteAfter { require Proc::Background; Proc::Background->new( $^X, $thisfile, deleteafter => @_ ); } sub AllowedTemporaryFile { ... } sub ListFiles { ... } sub ServeFile { my( $q, $file ) = @_; ## see [id://1151407] }
        see Re^4: awanti Perl not playing video with vlc plugin
Re^2: How to sleep(), or use a while() in the background?
by taint (Chaplain) on May 07, 2016 at 06:58 UTC
    Thanks for the reply, Anonymous Monk

    The Proc::Background looks interesting, and that's good advice, regarding the "shell interpolation". In my humble defense; I'm just trying to push some parts together that'll accomplish the task. I'll safely arrange everything, when I've finally found all the necessary parts. Advice well taken, and appreciated. :)

    --Chris

    λɐp ʇɑəɹ⅁ ɐ əʌɐɥ puɐ ʻꜱdləɥ ꜱᴉɥʇ ədoH

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1162426]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (3)
As of 2022-07-05 18:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?