babA409866
babA409866
i still cannot solve the problem with so many build error
可以直接安装个iconv就好了。apt-get install libiconv-dev。
多谢大佬的回复,好快! 目前我在Linux中编译成功了。也和一些其他库做了性能比较。快又稳定。赞。 但是在mac平台遇到了麻烦。mac平台里的Xcode好像是为了iphone的设置。没有mac平台的。然后我也尝试过各个在cmake里添加c99 之类的。但是还是比较多报错。也试过直接mark。也是跑不通。另外之前用别的开源库的时候。大多数都是在cmake里做到统一。可以执行多个平台。然后win端也是用cmake生成vs工程。我想在mac也做性能测试下。 关于编码的讨论,“除非是每个文件里添加BOM头”这个方式是有什么不好的么,或者现在借助chatgpt可以快速翻译下。或者是正则分离直接把中文提取成api文档。 个人的一些做法和想法,仅供参考。我对C++的使用不多。但是最近为了性能就上了C++。个人觉得golang,nodejs之类的包管理器的理念都很好。C++的我找了类似的包管理器,有很多种。但是我比较用下来最舒服的就是用cmake了。几乎可以在一个cmake里声明好所有的用到的第三方库。包括openssl zlib curl的等。虽然每次都要编译一次。但是这样可以和其他语言一样做到工程用到的库只会依赖工程内的文件。同时,也不会修改到所在系统的文件和环境。特别是有的库,比如都依赖openssl,但是都要求使用特定小版本号,但是还不一样 这就很操蛋了。cmake里可以通过ExternalProject_Add的方式添加第三方的子仓库。编译后就在自己的build目录下 结构很清爽干净。迁移工程只需要一个cmakelist文件 不需要再要求手动安装各类库。个人工作流里 三个平台都是在vscode里编码。都是用cmake。下面是一些举例 ```cmake include(ExternalProject) ExternalProject_Add(zlib URL https://www.zlib.net/zlib-1.2.13.tar.gz PREFIX ${CMAKE_CURRENT_BINARY_DIR}/zlib CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/zlib BUILD_COMMAND make -j$(nproc) INSTALL_COMMAND make install ) ExternalProject_Add(openssl PREFIX...
还有一个问题。大佬考虑增加设置http代理功能么。我看说明里是有实现的。但是只是在c里面实现的么。acl::http_request里好像没有实现。另外在lib_protocol也有实现。但是好像不是类似curl里面的 -x 选项的那种代理。 http_request_pool 能够在这个请求池里实现http代理么。 acl/lib_acl_cpp/samples/http_request_pool/main.cpp 在这里类里 实现了线程池 链接池。但是好像没办法设置代理。另外接收数据的buf 的写法是 char buf[8192];。如何用acl的可变长的buf来接收数据,或者是用acl::string来接收呢。 http_request(socket_stream* client, int conn_timeout = 60, bool unzip = true, bool stream_fixed = true);这里的stream_fixed这个需要改为固定的么。 我的需求大概是用连接池定时大量请求URL。并且使用代理获取。接收数据的buff也做对象池避免重复创建。每次接收到内容后,返回httpcode和respone内容给一个外部传入的回调处理。URL数组都处理完了后。也有一个总回调返回总耗时,统计失败个数,以此为依据调整并发量或者维持并发。
> > 还有一个问题。大佬考虑增加设置http代理功能么。我看说明里是有实现的。但是只是在c里面实现的么。acl::http_request里好像没有实现。另外在lib_protocol也有实现。但是好像不是类似curl里面的 -x 选项的那种代理。 > > http_request_pool 能够在这个请求池里实现http代理么。 acl/lib_acl_cpp/samples/http_request_pool/main.cpp > > 在这里类里 实现了线程池 链接池。但是好像没办法设置代理。另外接收数据的buf 的写法是 char buf[8192];。如何用acl的可变长的buf来接收数据,或者是用acl::string来接收呢。 http_request(socket_stream* client, int conn_timeout = 60, bool unzip = true, bool stream_fixed...
老哥 。 例如这个curl命令 curl www.baidu.com -x http://58.246.58.150:9002 。是通过http代理 访问百度数据。这样如果短期内请求太多。也只是代理被百度限流。 如何用 acl::http_request 完成此类需求 ,麻烦举个小例子的伪代码 > 你可以直接使用 acl::http_request 类完成你的需求,在构造时传入代理服务器的地址(如:xxx.xxx.xxx.xxx:port),然后就以构建 HTTP 请求直接向代理服务器发送请求了。 我看相关的知识点的解释好像也是说。是要先发给代理服务器 然后代理服务器会再发给目标服务器。就是还没弄清楚是在哪里把这两个值传递给代理服务器的。是不是我在httphead指定目标服务器 在request指定代理服务器。set_url这个接口是用来设置哪个参数概念的
> 你可以直接使用 acl::http_request 类完成你的需求,在构造时传入代理服务器的地址(如:xxx.xxx.xxx.xxx:port),然后就以构建 HTTP 请求直接向代理服务器发送请求了。 在弱cpu的云服务器上测试。acl库的表现好太多了。用curl好像cpu波动和速度都慢,当然也是我没做任何优化,同一机器上表现相差很多。和libhv写的wrk。同比测试好太多了。按照那个项目的描述应该也是不差的才对。该做的优化点都做了。github现在提供了小型云docker一样的环境。上面的网速很快 就是核心数少 。我横向测试了好几个。ack写的大概每秒可以到2000个请求百度。其他的100到1000不等。