If it's CLI, can't you just set up the Console logger? You wouldn't need the if() there, only at a setup() method.
On Wed, Jul 8, 2015 at 10:59 PM, Johandry Amador Segui <[email protected]> wrote: > Exactly, I have it. I highlighted in red the exit from the child. > > Also (maybe is useful) I have a print with an ‘if $cli’ to print messages > in the console (debugging or logging) when the sub is executed from the CLI. > > use POSIX qw(_exit); > > sub execute { > > # These 2 lines below were to eliminate the error that I mentioned before. > It did not eliminated them just reduce them > my $dbh = database(); > $dbh->{InactiveDestroy} = 1; > > my $pid = fork(); > > if ($pid) { > # This is the parent (Dancer) in case you want to do something here > debug “Process started with PID $pid\n”; > > } elsif ($pid == 0) { > # This is the child, here is where I do all I need > $template = … > $exit_code= … > > print “Something in the console” if $cli > _exit($exit_code); > } else { > debug “Could not fork: $!\n”; > } > > # I have a variable to know if I’m running this sub from the web or from > CLI > if ($cli) { > my $output = waitpid($pid, 0); > print “The process finish with output: $output”; > } > > return $template; > } > > > On Jul 7, 2015, at 11:15 PM, Andrew Beverley <[email protected]> wrote: > > On 2015-07-08 00:58, Johandry Amador Segui wrote: > > Hi Andy, > I tried to use threads and it did not worked for me (maybe because of > non safe thread modules I am using) so I use fork in a production > application and it works good. I have some issues some times with > MySQL that I have not fixed yet but they do not happen very often. > This is an example of how I use it: > sub execute { > # These 2 lines below were to eliminate the error that I mentioned > before. It did not eliminated them just reduce them > my $dbh = database(); > $dbh->{InactiveDestroy} = 1; > my $pid = fork(); > if ($pid) { > # This is the parent (Dancer) in case you want to do something here > debug “Process started with PID $pid\n”; > } elsif ($pid == 0) { > # This is the child, here is where I do all I need > $template = ... > } else { > debug “Could not fork: $!\n”; > } > # I have a variable to know if I’m running this sub from the web or from > CLI > if ($cli) { > my $output = waitpid($pid, 0); > print “The process finish with output: $output”; > } > return $template; > } > This is just an example, not the entire code. If someone has a > suggestion or improvement, it is welcome. > > > Surely you need an exit() in there somewhere for the child process, > otherwise you'll end up with lots of web server threads? > > Andy > > _______________________________________________ > dancer-users mailing list > [email protected] > http://lists.preshweb.co.uk/mailman/listinfo/dancer-users > > > > _______________________________________________ > dancer-users mailing list > [email protected] > http://lists.preshweb.co.uk/mailman/listinfo/dancer-users > >
_______________________________________________ dancer-users mailing list [email protected] http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
