您现在的位置是:首页 > 文章详情

年度收尾 C++ Web 框架 Paozhu 1.5.4 版,支持 PHP、HTTP2 稳定百万压测

日期:2023-12-25点击:50

C++ Web框架Paozhu,发布一年,经过几次不停重构,目前百万压测没有问题。

1.5.4版,大范围重构、代码更加现代化和稳定,全球几乎唯一自己开发解析http2协议的C++框架,跟系统高度集成没有性能开销。

作为新的一代服务器容器程序,Paozhu可以承担PHP开发迁移,老代码可以不动,新业务使用C++20等现代快速开发,Paozhu 使用FastCGI+PHP-FPM方式,C++20完善,开发速度也可以比肩脚本语言,加上三大编译器支持内存泄漏检查asan,能过编译器,运行起来就没有问题,有问题可以自动定位。

Paozhu C++ Web框架 内置强大的C++ ORM模块,简单易用,自动从数据库生成ORM实体类,内置分页,几行代码可以代替Java几百行代码。

Paozhu C++ Web框架经典内容列表,包括搜索、分页程序,鉴权等

 //@urlpath(admin_islogin,admin/listarticle) std::string admin_listarticle(std::shared_ptr<httppeer> peer) { httppeer &client = peer->getpeer(); try { auto topicm = orm::cms::Topic(); topicm.where("userid", client.session["userid"].to_int()).asc("parentid").fetch(); unsigned int topicid = client.get["topicid"].to_int(); unsigned int page = client.get["page"].to_int(); std::string searchword = client.get["searchword"].to_string(); searchword = mb_substr(searchword, 0, 15); client.val["topicid"] = topicid; client.val["list"].set_array(); OBJ_ARRAY temp; std::map<unsigned int, std::string> topickv; std::vector<unsigned int> topic_id_array;//articles under this topic and sub topics if (topicid > 0) { topic_id_array.push_back(topicid); } for (unsigned int i = 0; i < topicm.record.size(); i++) { temp["id"] = topicm.record[i].topicid; temp["parentid"] = topicm.record[i].parentid; temp["value"] = topicm.record[i].title; client.val["list"].push(temp); topickv[topicm.record[i].topicid] = topicm.record[i].title; if (topicid > 0) { for (unsigned int j = 0; j < topic_id_array.size(); j++) { if (topicm.record[i].parentid == topic_id_array[j]) { topic_id_array.push_back(topicm.record[i].topicid); } } } } auto artmodel = orm::cms::Article(); artmodel.where("userid", client.session["userid"].to_int()); if (topicid > 0) { std::string topicid_sql_str = array_to_sql(topic_id_array); if (topicid_sql_str.size() > 0) { artmodel.whereIn("topicid", topicid_sql_str); } } if (searchword.size() > 0) { artmodel.andsub().whereLike("title", str_addslash(searchword)); artmodel.whereOrLike("content", str_addslash(searchword)).andsub(); client.val["searchword"] = searchword; } auto [bar_min, bar_max, current_page, total_page] = artmodel.page(page, 10, 5); client.val["pageinfo"].set_array(); client.val["pageinfo"]["min"] = bar_min; client.val["pageinfo"]["max"] = bar_max; client.val["pageinfo"]["current"] = current_page; client.val["pageinfo"]["total"] = total_page; artmodel.select("aid,topicid,title,createtime,sortid,isopen").desc("aid").fetch(); client.val["alist"].set_array(); OBJ_ARRAY tempa; if (artmodel.size() > 0) { for (auto &item : artmodel) { tempa["title"] = item.title; tempa["aid"] = item.aid; tempa["date"] = item.createtime.substr(0, 10); tempa["topicname"] = topickv[item.topicid]; tempa["sortid"] = item.sortid; tempa["isopen"] = item.isopen; client.val["alist"].push(tempa); } } } catch (std::exception &e) { client.val["code"] = 1; } peer->view("admin/listarticle"); return ""; }

1.特性🔥🔥🔥🔥🔥

✅ 1. 自带json编解码不用第三方库,标准json支持
✅ 2. 支持多域名网站
✅ 3. 支持多域名ssl 服务端
✅ 4. 支持http/1.1、http/2协议
✅ 5. 支持websocket服务端
✅ 6. 框架自带websocket推送,支持定时推送到webscoket客户端
✅ 7. 支持httpclient get post,同步异步、协程模式,数据采集
✅ 8. 框架自带ORM,使用链接池方式,目前支持mysql
✅ 9. 框架自带线程池,和用户代码运行的线程池
✅10. 框架使用asio自带的协程
✅11. 框架特色是I/O 使用协程池 用户代码运行使用线程池,类似GO那种调度,只是针对http请求调度
✅12. 框架支持普通文件gzip、br,并支持缓存到磁盘,下次不用cpu再压缩
✅13. URL、POST和上传文件,解析结果client.get[] client.post[] client.files[]方式获取内容
✅14. 自带sendmail类库
✅15. 生成二维码(qrcode),需要gd、qrencode库
✅16. 插件化编程,热动态更新,使用动态库方式
✅17. 框架内置通用数据缓存模块,ORM结果缓存,提高并发能力
✅18. 框架controller目录注解功能,方便添加URL路由映射,降低入门心智
✅19. 结构和类注解JSON功能,使用json_encode json_decode操作复杂C++结构体和JSON互转,可以参考Wiki
✅20. 提供一个完整admin后台管理框架(见后面图片), 访问URL为 /admin/main
✅21. 支持PHP-FPM fastcgi运行模式,代替Apache做PHP前端,让PHP程序员平稳过渡到 C++ 开发模式

https://github.com/hggq/paozhu

原文链接:https://www.oschina.net/news/272516/paozhu-1-5-4-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章