| |
![Adam D Ruppe's Gravatar profile Gravatar of Adam D Ruppe](//www.gravatar.com/avatar/62f8a24090964f5b321456f45841fa56?d=identicon&s=32) | Posted by Adam D Ruppe in reply to Chris Piker | Permalink Reply |
|
Adam D Ruppe ![Adam D Ruppe's Gravatar profile Gravatar of Adam D Ruppe](//www.gravatar.com/avatar/62f8a24090964f5b321456f45841fa56?d=identicon&s=80)
Posted in reply to Chris Piker
| On Friday, 21 April 2023 at 02:34:10 UTC, Chris Piker wrote:
> A cursory reading of the cgi module indicates that arsd provide some of the same functionality of vibe.d, but uses multi-processes or multi-threads instead of fibers. Is that true?
It actually does a lot more than that, including a fiber impl too (the -version=embedded_httpd_hybrid)
> Also, how do you keep DB requests from getting munged together on the same DB connection socket when using arsd.cgi with arsd.database?
You don't use the same db connection socket. You have a separate one per worker.
The way I usually do it is:
---
Database getDb() {
static Database db;
if(db is null)
db = new WhicheverImpl(args);
return db;
}
---
So you get a thread-local cache, recreated whenever needed. This works reliably in all current modes. (I might be adding a new mode in version 11 that works differently, but I'll add a new helper function for that if I do).
> In general what would you say are the advantages of using arsd.cgi over vibe.d (other then simplicity of course).
Almost everything. It is much simpler to use, has more library compatibility, better performance (both compiles faster and serves faster), more stability (both fewer bugs and more long term api support), more features.... though there's a few places vibe might have something I don't (like there's a redis lib on their end, tho odds are you can use their lib in my system lol), I have most things they have and some things they don't (like my html form generators).
|