当前位置:

首页 > 编程开发 > ThinkPHP协程怎么用?高并发如何实现?

ThinkPHP协程怎么用?高并发如何实现?

ThinkPHP本身不支持协程,需借助Swoole或RoadRunner实现;2.使用Swoole时,通过创建server.php入口文件将ThinkPHP运行于常驻内存模式,并利用协程客户端处理非阻塞IO;3.实际项目推荐使用think-swoole等集成包以解决上下文隔离、连接池等问题;4.常见陷阱包括全局变量污染、阻塞IO操作、数据库连接池管理不当、协程上下文切换误解及调试困难;5.在传统PHP-FPM模式下,ThinkPHP通过服务器优化、数据库调优、缓存策略、消息队列、CDN和代码优化等手段应对

本文目录

    ThinkPHP本身不支持协程,需借助Swoole或RoadRunner实现;2. 使用Swoole时,通过创建server.php入口文件将ThinkPHP运行于常驻内存模式,并利用协程客户端处理非阻塞IO;3. 实际项目推荐使用think-swoole等集成包以解决上下文隔离、连接池等问题;4. 常见陷阱包括全局变量污染、阻塞IO操作、数据库连接池管理不当、协程上下文切换误解及调试困难;5. 在传统PHP-FPM模式下,ThinkPHP通过服务器优化、数据库调优、缓存策略、消息队列、CDN和代码优化等手段应对高并发;6. RoadRunner作为替代方案,以Go语言运行时管理PHP Worker,提供更稳定的内存控制和无状态请求处理,适合对内存泄露敏感的场景;7. 选择Swoole或RoadRunner应基于项目需求、团队技术栈及对运行模型的理解深度,两者均能显著提升ThinkPHP的并发性能。

    ThinkPHP的协程怎么用?ThinkPHP如何支持高并发?

    ThinkPHP框架本身并没有内置协程能力,它在传统意义上是一个基于PHP-FPM运行模式的Web框架。这意味着每一次请求都会启动一个新的PHP进程来处理,请求结束后进程随即销毁。因此,如果你想在ThinkPHP中使用协程,通常需要借助Swoole或RoadRunner这类高性能PHP应用服务器来改变其运行模式。至于ThinkPHP如何支持高并发,这并非框架单一的职责,而是一个系统工程,它依赖于服务器环境、数据库优化、缓存策略、消息队列、以及引入像Swoole/RoadRunner这样的异步IO运行时。

    ThinkPHP的协程怎么用?ThinkPHP如何支持高并发?

    ThinkPHP要跑在协程环境里,核心思路是让它从传统的PHP-FPM模式,切换到一个常驻内存、由Swoole或RoadRunner托管的运行模式。

    解决方案

    ThinkPHP的协程怎么用?ThinkPHP如何支持高并发?

    整合Swoole是实现ThinkPHP协程化的主流方案。首先,确保你的服务器环境已经安装了Swoole扩展。接着,你需要一个Swoole HTTP服务器的入口文件,通常是一个自定义的server.php脚本。在这个脚本里,你会实例化Swoole的Http\Server,然后将ThinkPHP的public/index.php作为请求处理的回调函数引入。

    具体来说,Swoole服务器会接管所有的HTTP请求,并在其内部的协程环境中调度这些请求。当ThinkPHP处理请求时,如果遇到阻塞IO操作(如数据库查询、Redis操作、文件读写、网络请求),Swoole提供的协程客户端会将其转换为非阻塞的异步操作,从而释放当前协程的CPU资源,让其他协程得以运行,极大地提升了并发处理能力。

    ThinkPHP的协程怎么用?ThinkPHP如何支持高并发?

    举个例子,一个简单的Swoole server.php可能会这样写:

    on("start", function (Server $server) {
        echo "Swoole http server is started at http://127.0.0.1:9501\n";
    });
    
    $http->on("request", function (Request $request, Response $response) {
        // 模拟ThinkPHP的入口文件
        // 这里需要将ThinkPHP的请求上下文注入到Swoole请求中
        // 实际项目中,会更复杂,需要处理全局变量、会话等
        try {
            // 伪代码,实际需要更精细的封装
            $_SERVER['REQUEST_URI'] = $request->server['request_uri'];
            $_SERVER['REQUEST_METHOD'] = $request->server['request_method'];
            $_GET = $request->get ?? [];
            $_POST = $request->post ?? [];
            $_FILES = $request->files ?? [];
            $_COOKIE = $request->cookie ?? [];
            $_REQUEST = array_merge($_GET, $_POST, $_COOKIE); // 简单合并,实际需注意优先级
            // ... 更多$_SERVER, $_HEADER等变量的设置
    
            ob_start();
            // 引入ThinkPHP的入口文件,让它处理请求
            require __DIR__ . '/public/index.php';
            $content = ob_get_clean();
    
            $response->header("Content-Type", "text/html; charset=utf-8");
            $response->end($content);
        } catch (\Throwable $e) {
            $response->status(500);
            $response->end("Server Error: " . $e->getMessage());
        }
    });
    
    $http->start();

    当然,这只是一个非常简化的模型,实际的生产环境会使用像top-think/think-swoole这样的官方或社区维护的包,它们已经处理了复杂的全局变量隔离、上下文切换、数据库连接池管理等问题,让你能更专注于业务逻辑。

    高并发的支持,除了协程化带来的IO效率提升,更是一个多层面的系统优化过程。ThinkPHP作为应用层框架,它本身在代码执行效率、数据库操作封装、缓存机制等方面提供了基础。但真正的“高并发”需要Nginx的负载均衡、PHP-FPM的进程管理、Redis/Memcached的分布式缓存、MySQL的读写分离与分库分表、消息队列的异步解耦、以及CDN的内容分发等一系列技术的协同作用。协程只是其中一个强有力的“武器”,它让PHP在单机处理能力上有了质的飞跃。

    ThinkPHP整合Swoole协程的实践步骤与常见陷阱

    将ThinkPHP与Swoole协程结合,绝不是简单地把ThinkPHP跑在Swoole上那么直接。这里面涉及到很多细节,稍不注意就可能踩坑。

    实践步骤

    1. 安装Swoole扩展: 这是基础,确保你的PHP环境已经通过pecl install swoole或者其他方式安装了Swoole扩展,并且在php.ini中启用了它。
    2. 引入think-swoole包: ThinkPHP官方或社区通常会提供一个专门用于Swoole集成的Composer包,比如composer require top-think/think-swoole。这个包会帮你处理很多Swoole服务器的启动、请求分发、上下文管理等繁琐工作。
    3. 生成Swoole服务启动文件: 按照think-swoole的文档,通常会有一个命令来生成一个server.php或类似的启动脚本。这个脚本会配置Swoole服务器的监听端口、进程数等参数,并指定ThinkPHP的入口文件。
    4. 配置Swoole: 在config/swoole.php(如果think-swoole提供了)中,你可以调整Swoole服务器的配置,比如工作进程数、任务进程数、是否开启守护进程模式、以及各种事件回调。
    5. 改造数据库和缓存: 这是关键一步。Swoole协程环境下,传统的PDO连接是阻塞的。你需要使用Swoole提供的协程化数据库客户端(如swoole/mysql)或者更推荐的,使用支持协程的连接池。ThinkPHP通常会通过适配器来支持这些。同样,Redis等缓存操作也应使用协程化的客户端。
    6. 启动Swoole服务器: 在命令行执行php server.php start(或php think swoole start,取决于你的集成包)来启动Swoole服务器。

    常见陷阱

    • 全局变量污染: 这是协程环境最常见的坑。在PHP-FPM模式下,每个请求都是独立的进程,全局变量会在请求结束后清空。但在Swoole常驻内存模式下,全局变量(如$_SERVER, $_GET, $_POST等,以及你自定义的全局变量或静态变量)会持续存在于内存中。如果处理不当,上一个请求的数据可能会泄露到下一个请求,导致数据混乱。think-swoole这样的包会做请求上下文隔离,但你自己代码中的静态变量或单例模式需要特别注意。
    • 阻塞I/O操作: 虽然Swoole提供了协程,但如果你在协程内部执行了非协程化的阻塞I/O操作(比如使用了传统的file_get_contents或未经协程化的cURL请求),它仍然会阻塞当前工作进程,导致并发能力下降。所有I/O操作都应该使用Swoole协程API或其兼容库。
    • 数据库连接池管理: 在协程环境下,频繁地创建和关闭数据库连接是低效且消耗资源的。使用数据库连接池是标准做法。确保你的数据库操作是通过连接池获取连接,并在操作完成后归还连接。
    • 协程上下文切换的理解: 协程的调度是用户态的,它不是真正的多线程。这意味着一个CPU核心在同一时间只能执行一个协程。协程的优势在于当一个协程遇到I/O等待时,它可以主动让出CPU,让其他协程运行,而不是像传统阻塞I/O那样傻等。理解这一点,有助于避免在协程中进行大量CPU密集型计算。
    • 调试复杂性: 协程的异步特性使得传统的Xdebug等调试工具可能无法直接追踪协程的执行路径。你需要学习Swoole的日志、defer、go等特性来辅助调试。

    抛开协程,ThinkPHP在传统FPM模式下如何应对高并发挑战?

    即使不使用Swoole或RoadRunner,传统的PHP-FPM模式下的ThinkPHP应用也并非不能应对高并发。只不过,它的策略更多是依赖于“堆硬件”和“优化流程”,而不是改变PHP自身的运行模型。

    • 服务器层面优化:
      • Nginx/Apache: 作为Web服务器,它们是请求的入口。优化Nginx的worker_processes、worker_connections、keepalive_timeout等参数,确保它能高效地处理大量并发连接。使用负载均衡器(如Nginx、HAProxy、LVS)将请求分发到多台PHP-FPM服务器。
      • PHP-FPM: 调整php-fpm.conf中的pm(进程管理方式,如dynamic或ondemand)、pm.max_children(最大子进程数)、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers等参数。合理设置这些值,既要保证有足够的进程处理请求,又要避免资源浪费。request_terminate_timeout也很重要,防止单个请求长时间占用进程。
    • 数据库优化:
      • 索引优化: 这是最基本也是最重要的。为经常查询的字段建立合适的索引。
      • 慢查询分析与优化: 定期分析数据库慢查询日志,找出耗时长的SQL语句,然后进行优化,可能是改写SQL、增加索引、或者调整数据结构。
      • 读写分离: 将数据库的读操作和写操作分离到不同的服务器,通常是主库负责写,从库负责读。
      • 分库分表: 当数据量非常庞大时,将数据分散到多个数据库或多张表中,降低单库单表的压力。
      • 连接池: 虽然PHP-FPM每次请求都会新建连接,但使用持久连接(PDO::ATTR_PERSISTENT)或数据库代理(如MaxScale、MyCAT)可以在一定程度上减少连接建立的开销。
    • 缓存策略:
      • OPcache: PHP自带的字节码缓存,可以避免每次请求都重新编译PHP脚本,显著提升性能。务必开启并合理配置。
      • 数据缓存: 使用Redis、Memcached等内存数据库缓存频繁访问的数据,减少对数据库的压力。ThinkPHP内置了缓存驱动,使用起来很方便。可以缓存查询结果、配置信息、用户信息等。
      • 页面缓存/静态化: 对于不经常变动的页面,可以生成静态HTML文件,直接由Nginx返回,完全不经过PHP。或者使用Nginx的proxy_cache功能缓存动态页面。
    • 消息队列:
      • 将耗时长的、非即时性的操作(如发送邮件、生成报表、图片处理、日志记录)放入消息队列(如RabbitMQ、Kafka、Redis List/Stream)。前端请求可以快速响应,后台由消费者异步处理。这能极大降低请求响应时间,提升并发处理能力。
    • CDN:
      • 将静态资源(图片、CSS、JavaScript文件)部署到CDN(内容分发网络)上。用户从离他们最近的CDN节点获取资源,减少服务器带宽压力,加快页面加载速度。
    • 代码层面优化:
      • 减少数据库查询: 避免N+1查询问题,使用join或批量查询。
      • 优化算法: 避免在循环中执行复杂操作,选择更高效的算法。
      • 懒加载/按需加载: 只有在需要时才加载数据或资源。
      • 使用缓存: 充分利用ThinkPHP的缓存机制。
      • 避免不必要的计算: 减少重复计算,利用变量存储中间结果。

    这些优化措施都是在不改变ThinkPHP自身运行模型的前提下,通过外部环境和内部代码的精细打磨,来提升系统整体的并发承载能力。

    使用RoadRunner提升ThinkPHP性能与高并发能力的考量

    RoadRunner是另一个非常优秀的PHP高性能应用服务器,它用Go语言编写,旨在提供一个快速、轻量、支持协程(虽然它内部实现与Swoole不同,但对外表现是类似的)的PHP运行时。与Swoole相比,RoadRunner在某些方面有其独特的优势和考量。

    为什么选择RoadRunner?

    1. Go语言的性能优势: RoadRunner本身是Go语言编写的,这使得它在启动速度、内存管理和并发处理上非常高效。它利用Go的协程(goroutine)来管理PHP worker进程,提供了一种不同于Swoole的异步IO模型。
    2. 更纯粹的PHP Worker: RoadRunner将PHP视为一个独立的worker进程,每次请求处理完成后,PHP worker会重置其状态,等待下一个请求。这种“请求-响应-重置”的模型,在一定程度上避免了Swoole常驻内存模式下可能出现的全局变量污染、内存泄露等问题,因为它每次都提供一个相对“干净”的环境。
    3. 部署与运维: RoadRunner只有一个独立的二进制文件,部署相对简单。它也支持多种协议(HTTP、GRPC、Queue等),功能全面。
    4. 性能: 在一些基准测试中,RoadRunner在特定场景下甚至可能比Swoole表现出更好的性能,尤其是在内存占用和稳定性方面。

    如何整合ThinkPHP与RoadRunner?

    整合RoadRunner通常比Swoole更直接一些,因为它将PHP视为一个无状态的worker。

    1. 安装RoadRunner: 从GitHub下载RoadRunner的二进制文件,并确保它在你的系统路径中。

    2. 创建.rr.yaml配置文件: 这是RoadRunner的核心配置文件,定义了如何启动PHP worker,监听哪个端口,以及其他服务配置。

      # .rr.yaml 示例
      http:
        address: 0.0.0.0:8080
        pool:
          num_workers: 4 # PHP worker进程数
          supervisor:
            max_worker_lifetime: 3600 # worker最大存活时间,防止内存泄露
            max_worker_memory: 256 # worker最大内存限制 (MB)
      
      rpc:
        listen: tcp://127.0.0.1:6001 # RPC服务,用于RoadRunner内部通信
      
      # 定义PHP worker的启动命令
      server:
        command: "php public/index.php rr-worker" # 启动ThinkPHP的worker
    3. 修改ThinkPHP的入口文件: public/index.php需要做一些调整,使其能够作为RoadRunner的worker运行。这通常意味着引入RoadRunner的PHP SDK,然后在一个循环中处理请求。

      waitRequest()) {
          try {
              // 重置ThinkPHP应用状态,防止全局变量污染
              // 这一步非常重要,可能需要销毁之前的Application实例,重新创建
              // 具体的实现依赖于ThinkPHP的RoadRunner适配器
              // 这里只是一个概念性的表示
              $app = new \think\App(); // 每次请求都重新实例化应用
      
              // 模拟请求环境,将RoadRunner的请求数据映射到$_SERVER等
              $_SERVER = array_merge($_SERVER, $req->getHeaders());
              $_SERVER['REQUEST_URI'] = $req->getUri()->getPath();
              $_SERVER['REQUEST_METHOD'] = $req->getMethod();
              $_GET = $req->getQueryParams();
              $_POST = $req->getParsedBody() ?? [];
              // ... 更多变量设置
      
              ob_start();
              $response = $app->run(); // 运行ThinkPHP应用
              $content = ob_get_clean();
      
              // 将ThinkPHP的响应发送回RoadRunner
              $httpWorker->respond(
                  200,
                  $content,
                  $response->getHeaders() // 获取ThinkPHP的响应头
              );
          } catch (\Throwable $e) {
              $httpWorker->respond(500, "Server Error: " . $e->getMessage());
          }
      }
    4. 启动RoadRunner: 在命令行执行rr serve。

    考量与对比

    • 状态管理: RoadRunner的worker模型在每次请求后都会重置PHP环境(或至少要求你显式重置),这在很大程度上避免了Swoole常驻内存模式下可能出现的内存泄露和全局变量污染问题,使得代码编写时可以更接近传统FPM模式的思维。但这也意味着每次请求可能需要重新加载框架和业务代码,虽然有OPcache,但启动开销依然存在。
    • 资源利用: RoadRunner的内存占用通常更稳定,因为它会定期回收worker进程,防止内存无限增长。
    • 生态: Swoole拥有更庞大和成熟的PHP社区生态,许多PHP库都有Swoole协程版本的适配。RoadRunner的PHP生态相对较新,但也在快速发展。
    • 调试: 两者在调试上都比传统FPM模式复杂,但RoadRunner的“无状态”特性在某些情况下可能更容易排查问题,因为它每次都是“干净”启动。
    • 适用场景: 如果你的应用对内存泄露非常敏感,或者希望每次请求都拥有一个相对干净的环境,RoadRunner可能是一个不错的选择。如果你的应用需要大量长连接、WebSocket、或者需要深度利用PHP的异步IO能力来构建复杂服务,Swoole的灵活性和丰富API可能更具优势。

    总的来说,RoadRunner提供了一种高性能、高并发的替代方案,它用Go的稳定性来管理PHP的生命周期,为ThinkPHP应用带来了显著的性能提升。选择Swoole还是RoadRunner,往往取决于项目的具体需求、团队的技术栈偏好以及对两种运行时模型的理解深度。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    Cursor新增实时语音对话:可边通话边让Agent编程
    Cursor新增实时语音对话:可边通话边让Agent编程

    Cursor新增实时语音对话,支持在Agent运行任务时交流并听取进度,覆盖Agents Window、IDE、网页端与iOS,语音通话需登录账号并开启麦克风权限。

    VS Code 1.145更新:Cron调度、远程预览与补丁修复
    VS Code 1.145更新:Cron调度、远程预览与补丁修复

    VS Code 1.145新增本地Cron调度,扩展远程Agent预览能力;后续1.145.1与1.145.2修正遥测归属和事件路由。文中区分正式、预览及实验性功能。

    Ponytail适用人群与使用场景解析
    Ponytail适用人群与使用场景解析

    Ponytail面向已使用AI编程助手并希望优化代码质量的开发者,以及负责维护旧项目或审查AI生成代码的技术人员。它提供了一套可重复加载的开发判断规则,帮助用户减少冗余代码、梳理数据流并评估技术选型。虽然非编程人员也可提出任务,但仍需具备一定技术判断力来核对兼容性、行为逻辑及必要检查项。本文详解其在代码审查、旧项目维护及前端原生能力评估中的具体应用路径。

    Impeccable安装后命令无法使用排查指南
    Impeccable安装后命令无法使用排查指南

    面向在Cursor或Codex中配置Impeccable技能的用户,解决安装后命令无法调用、菜单不显示或钩子无响应的问题。本文梳理从终端环境检查到工具重载的完整路径:确认Node.js与PATH配置,区分npx终端命令与聊天助手指令(如/impeccable audit),通过/impeccable check和update管理版本,利用/impeccable doctor修复配置漂移,并单独核对/hooks状态以排除权限干扰,避免盲目重装导致配置覆盖。

    DeepSeek SuperAgent非程序员使用指南:门槛与协作建议
    DeepSeek SuperAgent非程序员使用指南:门槛与协作建议

    面向希望利用 DeepSeek SuperAgent 辅助开发但缺乏编程背景的用户,本文解析其实际使用门槛。虽然任务派发可通过自然语言完成,适合业务人员整理需求,但独立部署、环境配置及代码审阅仍需技术基础。文章说明安装时的账号权限管理要点,指导如何通过面板监控任务状态,并强调在无人负责技术维护时不宜盲目自动化,需由专业人员验收代码以确保安全。

    Ponytail在Claude Code中的用途:控制代码规模、审查改动与整理技术债务
    Ponytail在Claude Code中的用途:控制代码规模、审查改动与整理技术债务

    面向使用Claude Code进行开发的程序员,Ponytail插件旨在通过引导AI助手优先复用现有能力来控制新增代码规模。本文介绍其核心用途:在开发任务中减少不必要代码编写,通过“/ponytail-review”命令审查暂存改动的安全性与可维护性,以及利用“/ponytail-debt”整理带有明确限制的开发捷径和技术债务。使用前需根据安装方式确认宿主支持的具体命令和自动加载功能。

    Impeccable适合哪些人使用:开发者与团队的界面设计指南
    Impeccable适合哪些人使用:开发者与团队的界面设计指南

    Impeccable面向已使用AI编程工具并希望优化界面清晰度的个人开发者、前端工程师及产品维护团队。它不要求用户精通设计术语,但需能明确描述用户目标与限制条件。本文介绍三类典型应用场景:个人开发者利用shape命令梳理需求边界,避免开发蔓延;团队通过document命令提取视觉规则至DESIGN.md以保持风格一致;维护者使用harden命令检查表单等界面的边缘状态。适用前提是手头有真实的界面设计或改进需求。

    Graphify离线使用指南:纯代码构图与本地模型配置方法
    Graphify离线使用指南:纯代码构图与本地模型配置方法

    面向需要在无网或受限网络环境下使用Graphify的开发者,明确其离线运行的边界条件。纯代码构图和读取本地图谱可在依赖就绪后完全离线进行;文档语义处理需预先配置本地Ollama模型并指定后端。本文详解如何通过--code-only参数避免联网调用、如何准备本地模型环境,以及区分本地文件读取与远程MCP服务连接的关键步骤,帮助用户实现真正的本地化知识图谱构建。

    命名转换工具推荐:马上默、摩卡工具箱与UniKit对比
    命名转换工具推荐:马上默、摩卡工具箱与UniKit对比

    面向需要在camelCase、snake_case、kebab-case等格式间转换变量名和字段名的开发者,本文对比三款中文界面工具。马上默适合批量处理并支持词元拆分检查,能精细控制缩写与数字边界;摩卡工具箱界面简洁,聚焦四种常用风格快速互转;UniKit则一次性提供十种命名风格结果,便于横向比较。针对缩写切分和数字连接等常见差异,文章说明了各工具的适用场景及核对要点,帮助用户根据项目规范选择合适方案。

    ASCII码表查询与转换工具推荐:小鹿tools、Toolbase与易白工具
    ASCII码表查询与转换工具推荐:小鹿tools、Toolbase与易白工具

    面向需要查询ASCII码值或进行文本编码转换的开发人员,本文对比三款中文在线工具。小鹿tools提供完整的0-127标准码表及控制字符详解,支持多种进制并排查看;Toolbase适合快速筛选特定字符或码值,界面直观;易白工具专注于整段文本与十进制、十六进制等序列的互转,适用于串口数据核对。需注意扩展ASCII并非统一标准,处理中文或Emoji时应使用Unicode工具。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。