Tag: g wan

使用KV商店管理G-WAN中的缓存

我目前正在使用G-Wan网络服务器在C中开发一个Web应用程序,我想使用G-Wan附带的KV商店来存储生成的网页和计数页面显示次数的计数器。 KV存储是一个哈希映射,可用于存储复杂数据,如结构。 这就是我用来存储HTML数据和一个整数的计数器: typedef struct { char* HTML; int nbDisplays; } my_data; Web服务器使用多个线程,并且KV存储在线程之间共享。 为了更新字段nbDisplays我正在使用primefaces操作__sync_fetch_and_add(…)但是我不知道更新作为指针的字段HTML的最佳方法是什么。 好点吗: 使用存储在KV中的现有结构来构建新结构以获取当前值并使用G-WAN提供的add()函数将其添加到KV Store(此函数用新结构替换旧结构) 或者直接更新存储在KV商店中的结构的值? 我不习惯在multithreading环境中编程,我害怕一些“奇怪”的行为……

如何使用Java / Scala在内存G-wan中保存数据结构

我认为Gwan是运行Scala应用程序的更高性能方式。 我们的用例涉及使用Scala数据结构在内存中保留大量数据。 这比简单的hashmap要复杂一些,所以我想避免尝试将它楔入Gwan附带的K / V商店。 还有许多C-library非常适合与之交互。 很好奇在Gwan上使用带有Scala应用程序的第三方C库的过程。 谢谢!

g-wan更新servlet

我注意到截至2012年10月19日的g-wan用户手册pdf文档, http ://gwan.ch/download,它说: 更新servlet(C,C ++等)当您需要添加或更新位于csp目录中的servlet时,您可以在不停止G-WAN的情况下执行此操作(所有缓存文件都会实时更新)。 然而,当我启动gwan时,它似乎编译了csp目录中的所有内容。 在具有1000个.c文件的系统上,这将是非常难看的。 无论如何,我尝试更新hello.c文件只是为了看看会发生什么。 当我再次访问它时,更改不会。 我必须重新启动服务器。 另外,如果我输入一个新的servlet,比如hello2.c,我会得到“在这台服务器上找不到请求的URL”。 直到我重新启动服务器? 是什么赋予了? G-WAN 3.3.28 64位(2012年3月28日11:24:16) – 我在2012年10月19日下载中看到的最新版本

是否有可用于替代脚本的低级语言?

我是一个“高级”脚本人。 我的所有代码都是基于类的PHP或JavaScript。 但是,我想知道是否有任何forms的有用的解释器项目用于“低级”编译语言,如C或C ++(奇怪的声音吧?)。 这一切都发生在我偶然发现http://g-wan.com/时,您可以将C代码设置为作为服务器脚本运行而着迷。 然而,该项目几乎没用,因为它由一个人运行并且是封闭源。 那么,是否有“低级”语言可以通过在运行时编译它们来使它们更容易运行。 或者这只是一个等待发生的严重事故,这解释了为什么这是我能找到的唯一项目呢? 能够为C脚本转储PHP / Ruby / Python将真正加速我们的网站。

GWAN Key-Value持久性多个商店

我想在持久模式下记录键值,但是当我想使用2个或更多不同的存储时,它不起作用。 这是我的脚本: … typedef struct{ kv_t *kv; char *name; } kv_data; int main(int argc, char *argv[]) { kv_data **data = (kv_data**)get_env(argv, US_SERVER_DATA); if(!data[0]){ data[0] = (kv_data*)calloc(1, sizeof(kv_data)); if(!data[0]){ return 500; } kv_t users; kv_init(&users, “users”, 10, 0, 0, 0); data[0]->kv = &users; kv_item item; item.key = “pierre”; item.klen = sizeof(“pierre”) – 1; item.val = “pierre@example.com”; […]

G-WAN处理程序重写解决方案

这是我的脚本: #include “gwan.h” // G-WAN exported functions #include // strstr() int init(int argc, char *argv[]) { u32 *states = (u32*)get_env(argv, US_HANDLER_STATES); *states = 1 <ptr, “GET / HTTP/1.1”)) { xbuf_repl(read_xbuf, “GET / HTTP/1.1”, “GET /?index HTTP/1.1”); } else { if(strstr(read_xbuf->ptr, “.c HTTP/1.1”)) { int *pHTTP_status = (int*)get_env(argv, HTTP_CODE); if(pHTTP_status) *pHTTP_status = 404; return 255; } […]