-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Mysql连接数过大问题和字符串转义问题。 #643
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
你好,第一个问题,控制并发连接数有几个方法可以解决: 最简单的,可以参考https://github.com/sogou/workflow/blob/master/docs/about-config.md 看看配置单个目标的最大连接数,学着里边的例子把一个远端目标的连接数改小: struct WFGlobalSettings settings = GLOBAL_SETTINGS_DEFAULT;
settings.endpoint_params. max_connections = 50;
WORKFLOW_library_init(&settings); 注意这样会修改掉全局的配置。 另外比较建议的方式是自己控制http发出的mysql请求并发数,workflow中的series就是可以用来做任务的控制的。还有如果只想改一个目标的settings,也可以把这个目标地址通过upstream的方式配置,就可以独享自己的一份settings了,参考这里:https://github.com/sogou/workflow/blob/master/docs/about-upstream.md 第二个问题,mysql的set_query()目前没有提供转义功能,需要你先转好。我看了下,官方客户端这个函数的实现也许还可能需要和当前mysql的当前字符集转义字符串有关?所以我们需要调研一下再决定是否支持~ |
通过改最大连接数的方法不太好,会导致MySQL任务失败。 |
直接给你写个demo吧: #include "workflow/WFResourcePool.h"
#include "workflow/WFTaskFactory.h"
#include "workflow/WFHtttpServer.h"
#include "workflow/MySQLResult.h"
WFResourcePool respool(50); // 假设最大50个并发
void mysql_callback(WFMySQLTask *task)
{
respool.post(NULL); // 归还资源
...
}
void process(WFHttpTask *server_task)
{
WFMySQLTask *mysql_task = WFTaskFactory::create_mysql_task(..., mysql_callback);
WFConditional *cond = respool.get(mysql_task);
series_of(server_task)->push_back(cond);
}
int main()
{
WFHttpServer(process);
....
} 比你原来的代码只多两行: |
明白了,辛苦各位了 |
hi 我最近在使用workflow中遇到了两个问题:
The text was updated successfully, but these errors were encountered: