当前位置:首页>php>PHP 微服务拆分:单体应用如何演进

PHP 微服务拆分:单体应用如何演进

  • 2026-02-05 08:21:42
PHP 微服务拆分:单体应用如何演进

当单体应用变得臃肿,微服务是一个选择。

今天聊聊如何将 PHP 单体应用拆分为微服务。


什么时候需要微服务

单体应用的问题

  • 代码库庞大,新人上手困难
  • 部署风险高,改一行代码要发布整个应用
  • 技术栈固定,无法针对不同模块选择最优方案
  • 扩展困难,无法单独扩展高负载模块

微服务不是银弹

微服务带来的复杂性:

  • 分布式系统的复杂性
  • 服务间通信开销
  • 数据一致性问题
  • 运维成本增加

建议:日活 10 万以下,团队 10 人以下,优先考虑单体应用。


拆分原则

1. 按业务领域拆分

电商系统拆分:
├── 用户服务(user-service)
├── 商品服务(product-service)
├── 订单服务(order-service)
├── 支付服务(payment-service)
├── 库存服务(inventory-service)
└── 通知服务(notification-service)

2. 单一职责

每个服务只负责一个业务领域。

3. 数据独立

每个服务有自己的数据库,不共享数据库。

❌ 错误:多个服务共享数据库
用户服务 ─┐
商品服务 ─┼─→ 共享数据库
订单服务 ─┘

✅ 正确:每个服务独立数据库
用户服务 → 用户数据库
商品服务 → 商品数据库
订单服务 → 订单数据库

服务间通信

1. HTTP/REST

最简单的方式。

// 订单服务调用用户服务
classUserClient
{
publicfunction__construct(
        private HttpClientInterface $http,
        private string $baseUrl
    )
{}

publicfunctiongetUser(int $id): ?array
{
        $response = $this->http->request('GET'"{$this->baseUrl}/users/{$id}");

if ($response->getStatusCode() !== 200) {
returnnull;
        }

return json_decode($response->getBody(), true);
    }
}

// 使用
$userClient = new UserClient($http, 'http://user-service:8080');
$user = $userClient->getUser(123);

2. 消息队列

异步通信,解耦服务。

// 订单服务发布事件
$queue->publish('order.created', [
'order_id' => $order->id,
'user_id' => $order->user_id,
'total' => $order->total,
]);

// 库存服务订阅事件
$queue->subscribe('order.created'function($message){
    $orderId = $message['order_id'];
// 扣减库存
});

// 通知服务订阅事件
$queue->subscribe('order.created'function($message){
    $userId = $message['user_id'];
// 发送通知
});

3. gRPC

高性能的 RPC 框架(下一篇详细讲)。


服务发现

服务实例动态变化,需要服务发现机制。

客户端发现

classServiceDiscovery
{
privatearray $services = [];

publicfunctionregister(string $name, string $host, int $port)void
{
$this->services[$name][] = [
'host' => $host,
'port' => $port,
        ];
    }

publicfunctiondiscover(string $name): ?array
{
        $instances = $this->services[$name] ?? [];

if (empty($instances)) {
returnnull;
        }

// 简单的随机负载均衡
return $instances[array_rand($instances)];
    }
}

使用 Consul

classConsulServiceDiscovery
{
publicfunction__construct(private ConsulClient $consul){}

publicfunctionregister(string $name, string $host, int $port)void
{
$this->consul->agent()->registerService([
'ID' => "{$name}-{$host}-{$port}",
'Name' => $name,
'Address' => $host,
'Port' => $port,
'Check' => [
'HTTP' => "http://{$host}:{$port}/health",
'Interval' => '10s',
            ],
        ]);
    }

publicfunctiondiscover(string $name)array
{
        $services = $this->consul->health()->service($name, ['passing' => true]);

return array_map(fn($s) => [
'host' => $s['Service']['Address'],
'port' => $s['Service']['Port'],
        ], $services);
    }
}

API 网关

统一入口,处理认证、限流、路由。

classApiGateway
{
privatearray $routes = [];
private ServiceDiscovery $discovery;

publicfunction__construct(ServiceDiscovery $discovery)
{
$this->discovery = $discovery;

$this->routes = [
'/users/*' => 'user-service',
'/products/*' => 'product-service',
'/orders/*' => 'order-service',
        ];
    }

publicfunctionhandle(Request $request)Response
{
// 1. 认证
if (!$this->authenticate($request)) {
returnnew Response(401'Unauthorized');
        }

// 2. 限流
if (!$this->rateLimit($request)) {
returnnew Response(429'Too Many Requests');
        }

// 3. 路由
        $service = $this->matchService($request->getPath());

if (!$service) {
returnnew Response(404'Not Found');
        }

// 4. 服务发现
        $instance = $this->discovery->discover($service);

if (!$instance) {
returnnew Response(503'Service Unavailable');
        }

// 5. 转发请求
return$this->forward($request, $instance);
    }

privatefunctionmatchService(string $path): ?string
{
foreach ($this->routes as $pattern => $service) {
if (fnmatch($pattern, $path)) {
return $service;
            }
        }
returnnull;
    }
}

分布式事务

Saga 模式

classCreateOrderSaga
{
publicfunctionexecute(array $orderData)void
{
        $steps = [];

try {
// 步骤 1:创建订单
            $order = $this->orderService->create($orderData);
            $steps[] = ['service' => 'order''action' => 'create''data' => $order];

// 步骤 2:扣减库存
$this->inventoryService->decrease($order->product_id, $order->quantity);
            $steps[] = ['service' => 'inventory''action' => 'decrease''data' => $order];

// 步骤 3:扣减余额
$this->walletService->deduct($order->user_id, $order->total);
            $steps[] = ['service' => 'wallet''action' => 'deduct''data' => $order];

        } catch (Exception $e) {
// 补偿:回滚已执行的步骤
$this->compensate($steps);
throw $e;
        }
    }

privatefunctioncompensate(array $steps)void
{
foreach (array_reverse($steps) as $step) {
            match ($step['service']) {
'order' => $this->orderService->cancel($step['data']->id),
'inventory' => $this->inventoryService->increase(
                    $step['data']->product_id,
                    $step['data']->quantity
                ),
'wallet' => $this->walletService->refund(
                    $step['data']->user_id,
                    $step['data']->total
                ),
            };
        }
    }
}

配置中心

classConfigCenter
{
private ConsulClient $consul;
privatearray $cache = [];

publicfunctionget(string $key, $default = null)
{
if (isset($this->cache[$key])) {
return$this->cache[$key];
        }

        $value = $this->consul->kv()->get($key);

if ($value === null) {
return $default;
        }

$this->cache[$key] = $value;
return $value;
    }

publicfunctionset(string $key, $value)void
{
$this->consul->kv()->put($key, $value);
$this->cache[$key] = $value;
    }
}

// 使用
$config = new ConfigCenter($consul);
$dbHost = $config->get('database/host''localhost');

链路追踪

classTraceMiddleware
{
publicfunctionhandle(Request $request, callable $next)Response
{
// 获取或生成 Trace ID
        $traceId = $request->getHeader('X-Trace-ID') ?: $this->generateTraceId();
        $spanId = $this->generateSpanId();

// 设置上下文
        Context::set('trace_id', $traceId);
        Context::set('span_id', $spanId);

        $startTime = microtime(true);

try {
            $response = $next($request);

// 记录追踪信息
$this->record([
'trace_id' => $traceId,
'span_id' => $spanId,
'service' => config('app.name'),
'path' => $request->getPath(),
'duration' => microtime(true) - $startTime,
'status' => $response->getStatusCode(),
            ]);

return $response->withHeader('X-Trace-ID', $traceId);

        } catch (Exception $e) {
$this->record([
'trace_id' => $traceId,
'span_id' => $spanId,
'error' => $e->getMessage(),
            ]);
throw $e;
        }
    }
}

总结

组件
作用
API 网关
统一入口、认证、限流
服务发现
动态获取服务地址
配置中心
统一管理配置
消息队列
异步通信、解耦
链路追踪
问题排查

拆分建议:

  1. 先拆分无状态服务
  2. 数据库最后拆分
  3. 渐进式迁移,不要一步到位
  4. 做好监控和告警

下一篇我们来聊 gRPC + PHP。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-07 10:45:28 HTTP/2.0 GET : https://f.mffb.com.cn/a/473407.html
  2. 运行时间 : 0.223337s [ 吞吐率:4.48req/s ] 内存消耗:4,936.02kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=2240e129ca8a97cb0b47c3a0ac8a6765
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000519s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000598s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.004111s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.008475s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001527s ]
  6. SELECT * FROM `set` [ RunTime:0.007976s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001719s ]
  8. SELECT * FROM `article` WHERE `id` = 473407 LIMIT 1 [ RunTime:0.004159s ]
  9. UPDATE `article` SET `lasttime` = 1770432328 WHERE `id` = 473407 [ RunTime:0.007298s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.008461s ]
  11. SELECT * FROM `article` WHERE `id` < 473407 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.016415s ]
  12. SELECT * FROM `article` WHERE `id` > 473407 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.009251s ]
  13. SELECT * FROM `article` WHERE `id` < 473407 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.014574s ]
  14. SELECT * FROM `article` WHERE `id` < 473407 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.008400s ]
  15. SELECT * FROM `article` WHERE `id` < 473407 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.019434s ]
0.224909s