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