One "easy" way would be to make the application asynchronous using Coro. Coro basically introduces what other languages call Green Threads to Perl. The drawback is that Coro does some dark magic to swap call stacks around, which may or may not play well with Apache, so you best put that functionality into a separate process. And even then it still employs that dark magic. See Twiggy and Starlet for Coro-based HTTP servers for example.
| [reply] |
nice, looks clean and pretty.. will dig into them tomorrow, might fit
tx for your hint! :)
cheers,
| [reply] |
| [reply] |
| [reply] |
I can definitely say that you need to tell us more, much more, about this application ... and about how and why it hurts. It certainly sounds to me like the Perl application, operating as it does “wedged into” an Apache service-process, has what has become a very inappropriate design. But exactly what to do about it, at this point, is not a question easily answered. It’s going to be a compromise decision. The hugely important question is: what compromise to make, and at what technical risk therefore cost.
My instincts tell me that what you really have here is a workflow management system, for which the Perl application ought to be ... a user interface. The work is being done by a different set of processes on the same or a different computer. But, since you say that “the scale of the program makes it unrealistic to rewrite,” the matter of making compromise technical decisions appears again. Fact is, you are going to have to “rewrite it” somewhat, and there will be no bright-line guidance with regard to how exactly to do so.
If you will, please follow-up on this thread with more detail. The necessary consultative expertise is unquestionably to be found here ... and not particularly in “me.” The task before you is going to require a lot of thought, and not-so-much programming.
| |