<div dir="ltr">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.<div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 8, 2015 at 10:59 PM, Johandry Amador Segui <span dir="ltr"><<a href="mailto:johandry@gmail.com" target="_blank">johandry@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Exactly, I have it. I highlighted in <font color="#ff4013">red</font> the exit from the child. <div><br><div>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.<div><br><div><div><font color="#ff4013">use POSIX qw(_exit);</font><br><div><br></div><div><span class="">sub execute {<br><br><span style="white-space:pre-wrap">      </span># These 2 lines below were to eliminate the error that I mentioned before. It did not eliminated them just reduce them<br><span style="white-space:pre-wrap">        </span>my $dbh = database();<br><span style="white-space:pre-wrap"> </span>$dbh->{InactiveDestroy} = 1;<br><br><span style="white-space:pre-wrap">     </span>my $pid = fork();<br><br><span style="white-space:pre-wrap">   </span>if ($pid) {<br><span style="white-space:pre-wrap">   </span><span style="white-space:pre-wrap">        </span># This is the parent (Dancer) in case you want to do something here<br><span style="white-space:pre-wrap">   </span><span style="white-space:pre-wrap">        </span>debug “Process started with PID $pid\n”;<br><br><span style="white-space:pre-wrap">        </span>} elsif ($pid == 0) {<br><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">        </span># This is the child, here is where I do all I need<br><span style="white-space:pre-wrap">    </span><span style="white-space:pre-wrap">        </span></span>$template = …</div><div><font color="#ff4013"><span style="white-space:pre-wrap">               </span>$exit_code= …</font></div><div><font color="#ff4013"><br></font></div><div><font color="#ff4013"><span style="white-space:pre-wrap">           </span>print “Something in the console” if $cli</font></div><div><font color="#ff4013"><span style="white-space:pre-wrap">          </span>_exit($exit_code);</font><span class=""><br><span style="white-space:pre-wrap">        </span>} else {<br><span style="white-space:pre-wrap">      </span><span style="white-space:pre-wrap">        </span>debug “Could not fork: $!\n”;<br><span style="white-space:pre-wrap">     </span>}<br><br><span style="white-space:pre-wrap">   </span># I have a variable to know if I’m running this sub from the web or from CLI<br><span style="white-space:pre-wrap">        </span>if ($cli) {<br><span style="white-space:pre-wrap">   </span><span style="white-space:pre-wrap">        </span>my $output = waitpid($pid, 0);<br><span style="white-space:pre-wrap">        </span><span style="white-space:pre-wrap">        </span>print “The process finish with output: $output”;<br><span style="white-space:pre-wrap">  </span>}<br><br><span style="white-space:pre-wrap">   </span>return $template;<br>}</span></div><div><div class="h5"><div><br></div><div><br><div><blockquote type="cite"><div>On Jul 7, 2015, at 11:15 PM, Andrew Beverley <<a href="mailto:andy@andybev.com" target="_blank">andy@andybev.com</a>> wrote:</div><br><div>On 2015-07-08 00:58, Johandry Amador Segui wrote:<br><blockquote type="cite">Hi Andy,<br>I tried to use threads and it did not worked for me (maybe because of<br>non safe thread modules I am using) so I use fork in a production<br>application and it works good. I have some issues some times with<br>MySQL that I have not fixed yet but they do not happen very often.<br>This is an example of how I use it:<br>sub execute {<br><span style="white-space:pre-wrap">       </span># These 2 lines below were to eliminate the error that I mentioned<br>before. It did not eliminated them just reduce them<br><span style="white-space:pre-wrap">       </span>my $dbh = database();<br><span style="white-space:pre-wrap"> </span>$dbh->{InactiveDestroy} = 1;<br><span style="white-space:pre-wrap">       </span>my $pid = fork();<br><span style="white-space:pre-wrap">     </span>if ($pid) {<br><span style="white-space:pre-wrap">   </span><span style="white-space:pre-wrap">        </span># This is the parent (Dancer) in case you want to do something here<br><span style="white-space:pre-wrap">   </span><span style="white-space:pre-wrap">        </span>debug “Process started with PID $pid\n”;<br><span style="white-space:pre-wrap">  </span>} elsif ($pid == 0) {<br><span style="white-space:pre-wrap"> </span><span style="white-space:pre-wrap">        </span># This is the child, here is where I do all I need<br><span style="white-space:pre-wrap">    </span><span style="white-space:pre-wrap">        </span>$template = ...<br><span style="white-space:pre-wrap">       </span>} else {<br><span style="white-space:pre-wrap">      </span><span style="white-space:pre-wrap">        </span>debug “Could not fork: $!\n”;<br><span style="white-space:pre-wrap">     </span>}<br><span style="white-space:pre-wrap">     </span># I have a variable to know if I’m running this sub from the web or from CLI<br><span style="white-space:pre-wrap">        </span>if ($cli) {<br><span style="white-space:pre-wrap">   </span><span style="white-space:pre-wrap">        </span>my $output = waitpid($pid, 0);<br><span style="white-space:pre-wrap">        </span><span style="white-space:pre-wrap">        </span>print “The process finish with output: $output”;<br><span style="white-space:pre-wrap">  </span>}<br><span style="white-space:pre-wrap">     </span>return $template;<br>}<br>This is just an example, not the entire code. If someone has a<br>suggestion or improvement, it is welcome.<br></blockquote><br>Surely you need an exit() in there somewhere for the child process, otherwise you'll end up with lots of web server threads?<br><br>Andy<br><br>_______________________________________________<br>dancer-users mailing list<br><a href="mailto:dancer-users@dancer.pm" target="_blank">dancer-users@dancer.pm</a><br><a href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users" target="_blank">http://lists.preshweb.co.uk/mailman/listinfo/dancer-users</a><br></div></blockquote></div><br></div></div></div></div></div></div></div></div></div><br>_______________________________________________<br>
dancer-users mailing list<br>
<a href="mailto:dancer-users@dancer.pm">dancer-users@dancer.pm</a><br>
<a href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users" rel="noreferrer" target="_blank">http://lists.preshweb.co.uk/mailman/listinfo/dancer-users</a><br>
<br></blockquote></div><br></div>