安微省住房和城乡建设厅网站中国114黄页网站宣传广告

张小明 2026/1/8 1:59:15
安微省住房和城乡建设厅网站,中国114黄页网站宣传广告,绵阳市城乡建设和规划局网站,娄底企业网站建设制作目录 1. 说明 2. 程序修改 3. 性能测试 4. 配置 4.1 Docker化部署 4.2 Caddy泛域名和证书设置 4.3 相关命令 5. 要点#xff1a; 6. 参考 1. 说明 Frankenphp是一个先进的#xff0c;结合了高性能Caddy服务器的PHP环境框架#xff0c;它允许用户只需要少量改动6. 参考1. 说明Frankenphp是一个先进的结合了高性能Caddy服务器的PHP环境框架它允许用户只需要少量改动就能让传统的php前端应用插上翅膀享受到异步服务带来的量级提升体验官网https://frankenphp.dev。它实际上是有两种运行模式普通模式和worker模式其中的普通模式类似于传统的LNMP容器只是Nginx换成了Caddy Server带来的提升并不特别明显。而worker模式就不同了效果是原来性能的三倍左右。2. 程序修改以TP6为例用worker模式的话入口程序需改由frankenphp_handle_request包裹使用参考官网docs:FrankenPHP: the modern PHP app server?php ignore_user_abort(true); require __DIR__ . /../vendor/autoload.php; $thinkApp new hinkApp(); $http $thinkApp-http; $handler static function () use ($http) { // 初始化并处理请求 $response $http-run(); // 发送响应 $response-send(); // 返回响应后终止应用 $http-end($response); }; $maxRequests (int)($_SERVER[MAX_REQUESTS] ?? 0); for ($nbRequests 0; !$maxRequests || $nbRequests $maxRequests; $nbRequests) { // 处理请求 $keepRunning rankenphp_handle_request($handler); // 执行一些在发送 HTTP 响应后的操作 gc_collect_cycles(); // 垃圾回收 if (!$keepRunning) break; }3. 性能测试Performance benchmark of PHP runtimes - DEV Community4. 配置4.1 Docker化部署docker-compose.yml其中: 证书路径映射到 /data0/Server/Auths/certs多个应用需添加不同的worker入口描述compose.yamlservices:php:container_name: frankenphp# image: dunglas/frankenphpbuild:dockerfile: frankenphp.Dockerfilecontext: ./dockerrestart: always# restart: unless-stopped# uncomment the following line if you want to use a custom Dockerfile#build: .environment:SERVER_NAME: php:80MAX_REQUESTS: 600FRANKENPHP_CONFIG: |worker {file /app1/public/index.phpnum 42watch}worker {file /app2/public/index.phpnum 42watch}#CADDY_SERVER_EXTRA_DIRECTIVES: try_files {path} {path}/ /index.php?s/{path}{query}CADDY_SERVER_EXTRA_DIRECTIVES: |try_files {path} {path}/ /index.php?s/{path}{query}ports:- “80:80” # HTTP- “443:443” # HTTPS- “443:443/udp” # HTTP/3volumes:- /data0/Server/Logs/caddy:/logs# - /data0/Projects/Test/test001:/app/public#- /home/website/ad_serving_backend:/app # App src- /home/website/app1:/app1 # App1 src- /home/website/app2:/app2 # App2 src- /data0/Server/Settings/caddy/Caddyfile:/etc/caddy/Caddyfile- /data0/Server/Db/caddy:/data- /data0/Server/Settings/caddy/config:/config- /data0/Server/Auths/certs:/certs# comment the following line in production, it allows to have nice human-readable logs in devtty: true4.2 Caddy泛域名和证书设置尽管Caddy自带无敌好感的自注册安全证书机制但有时候我们还是需要手动部署一些已有的证书(nginx原有证书即可)这时我们要编辑Caddyfile做定制:{ {$CADDY_GLOBAL_OPTIONS} frankenphp { #worker /path/to/your/worker.php {$FRANKENPHP_CONFIG} } # Logging log { output stderr level INFO #level DEBUG } } {$CADDY_EXTRA_CONFIG} {$SERVER_NAME:localhost} { #log { # # Redact the authorization query parameter that can be set by Mercure # format filter { # requesturi query { # replace authorization REDACTED # } # } #} root * public/ encode zstd br gzip # Uncomment the following lines to enable Mercure and Vulcain modules #mercure { # # Transport to use (default to Bolt) # transport_url {$MERCURE_TRANSPORT_URL:bolt:///data/mercure.db} # # Publisher JWT key # publisher_jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG} # # Subscriber JWT key # subscriber_jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG} # # Allow anonymous subscribers (double-check that its what you want) # anonymous # # Enable the subscription API (double-check that its what you want) # subscriptions # # Extra directives # {$MERCURE_EXTRA_DIRECTIVES} #} #vulcain {$CADDY_SERVER_EXTRA_DIRECTIVES} php_server } app1.com { #log { # # Redact the authorization query parameter that can be set by Mercure # format filter { # requesturi query { # replace authorization REDACTED # } # } #} root * /app1/public/ encode zstd br gzip tls /certs/app1.com/serv.pem /certs/app1.com/serv.key {$CADDY_SERVER_EXTRA_DIRECTIVES} log { output file /logs/app1.com.log { rotate_size 100 # Rotate after 100 MB rotate_keep 5 # Keep at most 20 log files roll_keep_for 72h } } php_server } app2.com { root * /app2/public/ encode zstd br gzip tls /certs/app2.com/serv.pem /certs/app2.com/serv.key {$CADDY_SERVER_EXTRA_DIRECTIVES} log { output file /logs/app2.com.log { rotate_size 100 # Rotate after 100 MB rotate_keep 5 # Keep at most 20 log files roll_keep_for 72h } } php_server }4.3 相关命令docker compose down docker compose up -d --wait # 修改配置后重拉容器 docker compose -f /data0/Server/Settings/docker-compose/frankenphp/docker-compose.yml down docker compose -f /data0/Server/Settings/docker-compose/frankenphp/docker-compose.yml up -d --wait # restart docker compose -f /data0/Server/Settings/docker-compose/frankenphp/docker-compose.yml restart # 日志 docker logs frankenphp5. 要点如果自建镜像扩展插件需三思是否需要加Opcache开启后 frankenphp 的watch功能监控文件修改自动热启将不能正常使用但开启后性能将提高40%左右。6. 参考-FrankenPHP: the modern PHP app server-Performance benchmark of PHP runtimes - DEV Community
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

北京网站建设价做自媒体可以搬运国外网站新闻吗

51单片机驱动蜂鸣器:从电路到代码的完整实战指南你有没有遇到过这样的情况?在做一个小项目时,想让系统发出“滴”一声提示音,结果接上蜂鸣器后——没声。或者声音断断续续、带杂音,甚至烧了个IO口?别急&…

张小明 2026/1/8 1:58:44 网站建设

为什么做pc网站个人网站模板打包下载

深入理解aarch64虚拟内存布局:用户态与内核态如何共存并隔离你有没有想过,当你在一台基于ARM的手机或服务器上运行一个简单的C程序时,操作系统是如何确保这个程序不会一不小心“踩”到内核的关键数据?又或者,为什么即使…

张小明 2026/1/8 1:58:12 网站建设

卖汽车的网站怎么做静态网页设计制作心得

多线程与CPU调度:深入解析与对比 多线程信号处理与线程管理 在多线程应用中,信号处理是一个关键环节。需要注意的是, sigwait(3) 、 sigwaitinfo(2) 和 sigtimedwait(2) 这些API无法等待内核同步生成的信号,像 SIGFPE 和 SIGSEGV 这类表示某种故障的信号,只能…

张小明 2026/1/8 1:57:39 网站建设

zenme用ps做网站图石家庄昨天下午出了大事

你是否担心QQ空间里那些珍贵的青春回忆会随着时间流逝而消失?😟 那些年写过的说说、上传的照片、收到的留言,都是无法替代的数字记忆。GetQzonehistory作为专业的QQ空间历史数据抓取工具,让你轻松备份所有公开的说说内容&#xff…

张小明 2026/1/8 1:57:07 网站建设

网站建设申请空间苏州城乡和住房建设局网站首页

一、摘要 京东商品视频API是京东开放平台提供的多媒体资源接口,主要用于获取商品的视频展示内容。该接口为电商平台开发、商品内容展示、营销推广等场景提供了丰富的视频数据支持。 主要功能特点:‌ 获取商品主图视频和详情视频 支持多规格商品的视频查…

张小明 2026/1/8 1:56:35 网站建设

网站升级公告模板网站推广的方法是什么

1. GPIO介绍 GPIO 是 “General-Purpose Input/Output” 的缩写,即通用输入 / 输出接口,是嵌入式系统(如单片机、MCU)中最基础的硬件接口之一。 核心特点 通用性:可灵活配置为 “输入” 或 “输出” 模式&#xff0c…

张小明 2026/1/8 1:56:02 网站建设