- 博客(1019)
- 资源 (2)
- 收藏
- 关注
原创 LNMP - EC2 CPU陡升导致, 排查流程
摘要:PHP-FPM性能问题排查指南 本文详细介绍了在Linux+Nginx+PHP-FPM+Laravel环境下排查性能问题的完整流程。通过8个关键指标(PHP-FPM进程数、active processes、listen queue、max_children reached、Nginx upstream响应时间、Laravel超时异常、API超时数和日志量),提供了具体的命令和解读方法。 主要内容包括: 基础环境确认:PHP-FPM/Nginx版本和配置路径 进程监控:查看PHP-FPM worker数
2026-08-04 20:45:10
194
原创 php - request_terminate_timeout解释
本文深入解析PHP-FPM中request_terminate_timeout参数的本质与作用。关键点: 该参数是PHP-FPM强制终止Worker进程的最终时限(默认30秒),不同于max_execution_time的脚本执行时间限制; 它涵盖所有操作时间(包括阻塞I/O),而max_execution_time仅计算CPU执行时间; API超时应通过CURLOPT_TIMEOUT等单独设置,否则会触发进程强制终止; 配置建议形成超时层级:API超时 < request_terminate_tim
2026-08-04 20:45:00
503
原创 MySQL collation 差异导致的类型比较行为不同
摘要:MySQL数据库查询差异源于collation排序规则不同。当code字段为CHAR类型时,使用utf8mb4_general_ci排序规则(常见于MySQL 5.7或早期8.0)会导致PDO传入整数参数时匹配失败;而utf8mb4_0900_ai_ci(MySQL 8.0+默认)能正确处理该场景。解决方案是在PHP代码中将$code强制转为字符串类型,确保PDO以字符串形式传参。该问题仅需修改callback方法中的参数类型转换,getCaptcha方法已有正确处理。诊断后需清理调试日志。
2026-07-24 09:50:45
229
原创 GEO vs SEO:从“排名之争”到“引用之战”
摘要: GEO(生成式引擎优化)正颠覆传统SEO(搜索引擎优化)模式,成为AI搜索时代的新营销策略。随着用户转向AI问答(如ChatGPT、DeepSeek),GEO的核心目标从“提升网页排名”转为“让AI主动引用品牌信息”。GEO强调内容权威性、结构化数据,而SEO仍是基础。两者关系如同“地基与高楼”,需协同布局。2025年全球GEO市场增速迅猛,但伴随“AI投毒”等风险,品牌需平衡主动优化与风险防范。未来,SEO确保被发现,GEO争夺AI信任,二者缺一不可。
2026-07-21 10:29:04
551
原创 PHP 处理动态请求:Nginx+PHP-FPM vs Swoole
本文对比了PHP处理动态请求的两种主流方式:Nginx+PHP-FPM和Swoole HttpServer。Nginx+PHP-FPM采用FastCGI协议通信,每次请求都会重建应用对象,适合传统PHP框架;Swoole则是常驻内存的HTTP服务器,支持协程高并发,应用对象跨请求复用。文章详细解析了两种架构的进程模型、通信方式和请求生命周期,指出Swoole在性能上的优势(避免重复框架引导)及其需要特别注意的内存管理问题。最后通过性能对比表,展示了Swoole在高并发场景下的显著优势,但也提示了其潜在的内存
2026-07-21 09:30:00
217
原创 解答: 处理网络动态请求(PHP视角)两种主流方式
本文对比了PHP-FPM与Swoole两种PHP请求处理方式的差异。PHP-FPM模式下,Nginx通过FastCGI协议与PHP-FPM通信(支持TCP/Unix socket),进程常驻但每次请求重建应用对象。Swoole模式下,可以直接处理HTTP请求(纯Swoole)或通过Nginx的HTTP proxy_pass转发(生产常用),采用TCP通信。关键区别在于:Swoole进程和应用对象都常驻内存,支持跨请求复用,但需注意全局变量清理;而PHP-FPM每次请求都会重建应用对象。Swoole作为完整的
2026-07-20 14:24:48
257
原创 PHP-FPM进程模型生命周期探究
PHP-FPM的Worker进程生命周期包括启动、循环处理请求和销毁三个阶段。Worker不是永久的,会在处理500个请求(pm.max_requests)或内存超限时重启,以防止内存泄漏。OPcache能缓存PHP字节码,避免每次请求重新编译,但框架引导(如Laravel的容器初始化)仍需每次执行,这与常驻内存的Node.js/Go等运行时不同。Laravel Octane通过Swoole/RoadRunner实现常驻内存,大幅提升性能。对于Lumen项目,虽然OPcache消除了编译开销,但每次请求仍需
2026-07-20 14:13:37
290
原创 Nginx + PHP-FPM 进程模型, 处理http请求的机制
本文分析了Nginx+PHP-FPM的进程架构模型。Nginx采用主从多进程+事件驱动机制,每个Worker可异步处理数千连接;PHP-FPM采用主从多进程同步阻塞模型,每个Worker同一时间只能处理一个请求。文章详细描述了请求处理流程:Nginx接收请求后通过FastCGI协议转发给PHP-FPM,由空闲Worker处理PHP代码后返回响应。重点指出PHP-FPM Worker进程的内存隔离特性(如$user变量仅存在于单个Worker内存),以及Worker数量直接决定系统PHP并发处理能力,建议通过
2026-07-20 14:09:24
858
原创 AI - Claude Code 最佳实践经验推荐
本文总结了15条提升Claude Code生产力的实战经验,分为三个层面:项目初始化、提示策略和工作流习惯。关键实践包括:创建项目文档CLAUDE.md、分模块管理领域规则、定义自定义命令、优化上下文范围;采用"先目标后实现"的提示策略、分阶段执行任务、复用现有代码模式;以及建立检查点、压缩上下文、自动化测试等高效工作流。作者强调投资优化工作流能带来复利效应,建议从基础配置开始逐步实施这些改进,同时保持人工Review以确保最终质量。
2026-07-08 19:46:17
539
原创 Claude Code 高效编程实践 + 审查未提交代码
本文介绍了使用ClaudeCode进行高效编程的最佳实践,主要包含五个方面:1.项目级规范,通过CLAUDE.md文件定义项目结构和编码规范;2.编程工作流,包括探索项目、任务规划、代码审查等步骤;3.代码审查方法,推荐使用/code-review命令或手动审查diff;4.提交前完整闭环流程;5.可选快捷别名设置。核心建议是:通过规范文件明确要求,采用"计划-实现-审查"的工作流程,充分利用AI工具进行代码审查,确保代码质量。文章还提供了针对PHP/Laravel项目的具体操作示例。
2026-07-08 19:34:59
261
原创 MySQL - extra->>“$.multiple“用法详解
摘要:该SQL查询使用了MySQL 5.7.13+的JSON操作符->>来提取JSON字段中的值,其中extra->>"$.multiple"表示从extra列提取multiple键的值,extra->>"$.bonus"提取bonus键的值。->>操作符会自动去除提取值的引号,而->会保留引号。查询中还通过extra->>"$.bonus"<amount条件进行数值比较。为提
2026-06-24 15:59:15
289
原创 AI - 最新大模型编程方面使用指南参考
2026年编程AI领域呈现清晰格局:Claude系列凭借82%的SWE-bench得分成为工程能力天花板,特别适合企业级开发与复杂重构(Claude4.5 Sonnet最优);而DeepSeek以1/10的成本实现90%+HumanEval得分,成为性价比霸主(V3/V4系列推荐)。工具层面,Cursor(集成Claude/GPT)和GitHub Copilot最成熟。 选型建议: 不差钱选Claude4.5(企业/核心项目) 个人开发首选DeepSeek-V4+Cursor 学生用DeepSeek R1免
2026-06-10 17:11:14
570
原创 支付 - 三方平台 - Ach, Actum, Plaid的区别以及关系
Actum和Plaid是支付流程中的互补服务商,分别负责后端支付执行和前端账户连接验证。Plaid通过API安全连接用户银行账户,获取授权信息;Actum则作为ACH支付处理器,通过ACH网络完成资金划转。ACH是美国低成本、批量处理的电子支付系统,适用于薪资发放、账单支付等场景。三者协同构建了从账户授权到资金结算的完整支付链条:Plaid提供"钥匙",Actum作为"操作员",通过ACH网络完成转账。
2026-06-10 17:00:09
215
原创 AI - 日常开发编程 推荐的模型
《AI编程助手模型选择指南》建议根据任务复杂度选择不同模型:日常开发首选性价比高的Claude-Sonnet(处理中等难度任务);复杂问题采用高性能的Claude-Opus(适合算法设计和大型重构);轻量任务用快速低成本的Claude-Haiku(处理简单脚本和代码解释)。同时指出Bedrock渠道网络更稳定,推荐"主力Sonnet、难题Opus、轻量Haiku"的搭配策略,在保证效率的同时优化成本。(149字)
2026-06-10 16:57:36
617
原创 mysql - SQLSTATE[23000]报错类型
SQLSTATE[23000]是SQL标准中的完整性约束违规错误代码,在MySQL中主要表现为四种常见情况:主键重复(错误码1062)、唯一键重复、外键约束失败(1452)和非空约束失败(1048)。文章详细介绍了每种错误的触发场景、对应的MySQL错误码及解决方案,包括使用INSERT IGNORE、REPLACE INTO、ON DUPLICATE KEY UPDATE等特殊语法处理冲突,以及通过事务和外键级联操作保证数据完整性。同时提供了错误诊断方法、预防措施和相关工具,如查看表约束和结构的SQL命令
2026-06-08 16:30:22
434
原创 Redis evalsha 可能返回的错误类型
本文总结了RedisService::center()->evalsha()方法执行时可能遇到的错误类型及处理方案。主要内容包括: 常见错误类型: NOSCRIPT(脚本未缓存) Lua脚本执行错误 参数数量/类型错误 连接错误 内存不足错误 改进的错误处理机制: 实现参数验证 分类处理不同异常(服务器异常/连接异常) 针对NOSCRIPT错误自动清除缓存并重试 添加监控指标记录错误统计 处理建议: 添加参数预校验 实现重试机制(对可恢复错误) 增强日志记录和监控 文中提供了完整的PHP错误处理代码示
2026-06-08 16:28:37
373
原创 Linux批量删除文件
本文介绍了Linux系统中批量删除文件的多种方法,包括:1)使用rm命令删除特定类型文件;2)按条件删除(如按时间或大小);3)交互式删除确认;4)删除目录及其内容;5)结合ls的安全删除方式;6)rsync清空目录技巧。特别强调了生产环境中慎用rm -rf,建议先确认文件列表并备份重要数据。最后提供了常用删除命令的速查表,包括删除日志文件、大文件和目录等场景下的具体命令。
2026-05-04 17:51:53
313
原创 Linux上 log日志很大,如何获取部分内容?
摘要:处理大日志文件时,应避免直接打开或传输整个文件以减少资源消耗。推荐方法包括:1)使用tail查看最后N行或实时监控;2)用sed/grep提取特定时间段或关键词的日志;3)用split分割大文件;4)传输前压缩日志。优化建议:避免vim/cat打开大文件,使用管道流式处理,输出到/tmp目录。这些方法能有效降低I/O和CPU负载,提升服务器性能。
2026-05-04 17:40:47
327
原创 如何快速拷贝服务器lumen.log到本地mac - GUI
Mac上推荐5款高效SFTP工具:1️⃣ FileZilla(免费开源)适合新手,支持拖拽操作;2️⃣ Electerm(免费开源)集成终端+文件传输,界面现代;3️⃣ Termius(免费基础版)颜值高,支持多端同步;4️⃣ FinalShell(免费)国人开发,带服务器监控功能;5️⃣ Transmit(付费)Mac老牌工具,性能卓越。连接时选择SFTP协议(端口22),通过拖拽即可快速下载日志文件。
2026-04-30 16:35:11
312
原创 如何快速拷贝服务器lumen.log到本地mac - 命令行工具
本文介绍了5种从服务器下载lumen.log文件到Mac本地的实用方法:1)推荐使用scp命令快速传输;2)rsync适合大文件断点续传;3)sftp提供交互式操作;4)先压缩再下载可提升大文件传输效率;5)VSCode可视化操作最直观。文章还提供了权限问题解决方案,并根据不同场景推荐最优方法组合,其中scp是最简单快捷的选择,只需一行命令即可完成文件传输。
2026-04-30 16:34:13
301
原创 域名解析DNS缓存方案汇总
DNS缓存是解决AWS EC2 DNS解析问题的有效方案,能显著提升应用性能和稳定性。本文对比了多种缓存方案:系统级缓存(dnsmasq)、应用层缓存、hosts文件等,详细介绍了dnsmasq的安装配置步骤,并提供了PHP/Laravel实现示例。推荐采用分层缓存策略,结合dnsmasq与应用层缓存,同时给出监控方法和紧急修复脚本。不同方案在延迟、可靠性和维护成本上各有优劣,其中混合方案综合表现最佳,解析延迟可降至0.5ms,适合高可用生产环境。实施后能有效减少DNS解析失败,建议配合定期维护和监控告警机
2026-04-26 09:56:20
255
原创 php_network_getaddresses: getaddrinfo failed: Name or service not known[tcp://xx.amazonaws.com:6379]
DNS 解析失败 - 最常见(80%)网络不通 - 防火墙/安全组问题AWS 配置问题 - VPC/子网设置Redis 服务未运行 - ElastiCache 实例状态推荐排查顺序在服务器上执行nslookup测试 DNS检查 AWS 安全组和 VPC 设置测试从服务器到 Redis 端口的网络连通性检查 PHP 和 Laravel 的 Redis 配置如果问题持续,建议联系 AWS 支持或检查 ElastiCache 实例的运行状态。
2026-04-02 09:11:28
381
原创 MySQL - information_schema.COLUMNS中字段的排序原则 以及如何修改
本文详细介绍了MySQL中information_schema.columns视图的排序机制及优化方法。主要内容包括:1)默认排序的不确定性及影响因素;2)多种查看和修改列顺序的方法;3)通过ALTER TABLE语句重排列顺序的技巧;4)自动化工具和存储过程管理列顺序;5)性能优化建议和实用查询示例。文章强调合理排序列的重要性,建议将主键、业务键等关键列优先排序,并保持一致性。最后提供了列排序的最佳实践和推荐模板,帮助提高查询性能、增强代码可读性并简化数据库维护工作。
2026-04-01 20:39:25
568
原创 MySQL- ORDINAL_POSITION 详解
MySQL中的ORDINAL_POSITION字段详解 ORDINAL_POSITION是MySQL系统表information_schema.columns中的一个重要字段,用于表示列在表中的定义顺序(从1开始计数)。该字段具有以下特点: 反映表的物理结构顺序,影响SELECT*和DESCRIBE等操作的输出结果 不能直接修改,必须通过ALTERTABLE或重建表来调整列顺序 对虚拟列、分区表等特殊场景同样适用 在表结构变更时会自动更新 实际应用中,ORDINAL_POSITION可用于生成文档、检测结构
2026-04-01 20:34:05
507
原创 MySQL - 读写延迟, 并发导致的问题-分析与解决
数据库高并发场景下常见两类问题:1.读写延迟(主从复制延迟)表现为写入后立即查询不到数据,解决方案包括强制主库读取、使用粘性连接或延迟重试策略;2.并发问题(如库存超卖)由竞态条件导致,可通过数据库事务+行锁、原子操作、Redis分布式锁或队列处理来解决。最佳实践应结合事务、锁机制和监控措施,针对不同业务场景选择主库强制读取或并发控制方案,同时建立完善的监控体系来及时发现和诊断问题。
2026-03-25 11:39:57
392
原创 PHP - 基于哈希的确定性随机分组算法-代码解析与扩展
摘要:本文介绍了一种基于哈希的确定性随机分组算法,主要用于AB测试、用户分桶等场景。该算法通过将用户ID与实验名称组合生成哈希值,再映射到权重区间确定分组,保证相同输入必定获得相同输出。核心方法包括randomFromConfig(处理分组逻辑)和randomFromString(哈希转数字)。算法具有分组确定性、均匀分布、实验独立性等特点,适用于功能灰度发布、多版本测试等场景,并提供了配置验证、分组稳定性保持等实践建议。文章还包含算法流程图、代码解析和实际应用示例,完整展示了该分组方案的实现原理和使用方法
2026-03-25 11:21:24
269
原创 马甲包“AB面”是如何实现的以及马甲包与主包的服务端架构选择?
文章摘要:A/B测试(AB面应用)是实现产品迭代优化的科学方法,包含实验设计、流量分组、策略下发、数据分析和决策全流程,依赖专业实验平台确保科学性。马甲包服务端架构选择需权衡风险与成本:共享架构降低开发成本但风险耦合,适用于内部测试或品牌矩阵;独立架构实现风险隔离但成本高昂,适合严格审核场景或跨境业务。实际应用中可采用混合架构平衡成本与风险。技术决策应基于具体业务目标和合规要求进行权衡。
2026-02-14 17:00:00
681
原创 App应用中的马甲包是什么?
摘要:马甲包是移动应用的克隆版本,通过修改名称、图标等元数据规避风险或增加曝光。主要类型包括功能简化版、"AB面"应用和矩阵导流包。技术实现需代码混淆、UI差异化等操作,但存在高下架风险、账号封禁和维护成本高等问题。马甲包虽能满足短期需求,但伴随显著合规风险,需谨慎使用。(149字)
2026-02-14 11:28:36
552
原创 OneSignal的实现原理(关键点说明)
OneSignal作为推送服务中转平台,其核心流程包含:1)设备注册时通过SDK获取唯一ID和平台推送令牌;2)发送消息时自动转换为各平台格式并路由至APNs/FCM等系统服务;3)通过SDK捕获用户点击等交互数据实现效果统计。典型场景下,开发者只需对接OneSignal统一API,即可完成从消息创建、跨平台投递到最终展示的全流程,由操作系统级通道确保消息可达性。必须集成客户端SDK才能实现完整的设备注册、消息呈现和数据闭环统计功能。
2026-02-14 11:16:08
1045
原创 SQL查询对比: select exists($sql) 跟 select * from `users` where `id` = 60000001的区别差异
摘要: SQL查询SELECT EXISTS(...)与SELECT *...的核心区别在于执行目标:前者通过"短路"机制仅检查记录存在性,找到即返回TRUE,效率更高;后者需读取整行数据,网络传输开销更大。性能差异依赖索引(无索引时两者均低效)、网络传输量(EXISTS仅返回1比特)及查询缓存。最佳实践:仅判断存在性用EXISTS或SELECT 1...LIMIT 1;需获取数据时用SELECT *。索引是高效查询的前提。
2025-12-25 13:57:51
417
原创 基于Redis消息队列的熔断机制实现方案(参考)
本文介绍了一种基于Redis消息队列的熔断机制实现方案。该方案包含三级熔断状态(关闭/开启/半开)、智能恢复机制、统计监控功能以及频率控制等特性。通过检查队列长度与预设阈值对比,自动触发熔断或预警,并记录相关事件。系统支持多种Redis数据结构,提供灵活的配置参数,包括熔断阈值、检查间隔和恢复阈值等。实现代码展示了核心功能如状态管理、队列检查、事件记录和告警发送等。测试示例验证了正常处理、熔断触发和统计查询等场景。该方案能有效防止队列积压导致的系统崩溃,确保消息队列的稳定性。
2025-12-19 14:30:00
675
原创 laravel如何引入助手函数;
Laravel引入自定义助手函数的两种主流方法:1) Composer自动加载 - 通过修改composer.json配置文件,简单快捷但不够"Laravel";2) 服务提供者注册 - 符合框架设计模式,适合中大型项目但步骤稍多。两种方法都需注意函数命名冲突,建议使用if(!function_exists())包装,并按功能分类组织文件。Composer方式适合简单场景,服务提供者更利于维护管理,开发者可根据项目需求选择合适方案。
2025-12-19 09:23:30
545
原创 PHP - 数组 移动某个元素到某个元素前面
摘要:本文介绍了4种PHP数组元素移动的实现方法:1)基于数组切片和拼接的通用方法;2)使用array_splice函数的简化方法;3)针对关联数组的键值处理方法;4)利用回调函数定位元素的灵活方法。每种方法都包含参数说明和示例代码,适用于数值数组、关联数组以及多维数组等不同场景。还提供了性能优化版本和大数组处理建议,开发者可根据具体需求选择合适方案来实现将指定元素移动到目标位置的功能。
2025-11-20 18:08:25
297
原创 PHP - 创蓝253国际短信发送接入测试(含代码)
本文介绍了如何通过创蓝253平台实现国际短信和语音验证码的发送功能。主要内容包括:1)注册获取API账号和密码;2)提供PHP代码实现,包含短信发送(sendSMS)和语音验证码(sendCall)的方法;3)详细说明了验证码生成、存储(使用Redis)、发送和验证流程;4)通过HttpService类处理API请求和响应。测试建议使用在线虚拟号码服务(如online-sim.pro)进行验证。该实现支持多并发请求,包含错误处理和日志记录功能,适用于国际短信/语音验证码发送场景。
2025-11-20 18:04:37
503
原创 HTTP 请求中断的深度扩展知识
本文系统分析了HTTP长连接中断处理的完整技术方案。首先从TCP协议层剖析连接状态变迁机制(FIN_WAIT/TIME_WAIT等)及Keep-Alive配置参数;然后详细对比Node.js、Python、Java、PHP等语言框架的客户端中断检测实现;接着探讨负载均衡器(Nginx/Apache)的超时配置策略,以及数据库事务回滚和Redis分布式锁清理机制。文章还提供了结构化日志和Prometheus监控指标设计规范,并推荐了异步任务模式和断路器模式两种最佳实践。最后介绍了利用curl、tc等工具模拟中
2025-10-17 13:46:27
602
原创 客户端被“强制杀死, 直接发送 RST 包“ 谁来发送?
当客户端进程被强制终止时,操作系统内核会发送RST包终止TCP连接,与正常关闭的FIN流程不同。文章分析了Linux/Windows内核的实现机制,对比了RST和FIN的区别,并提供了抓包示例和开发者注意事项(如避免资源泄漏、服务端容错设计)。理解这一机制有助于开发高可靠的网络服务,正确处理异常连接中断情况。
2025-10-17 13:46:20
575
原创 HTTP 请求到达服务端后,客户端立即杀死进程,服务端会如何处理?
当客户端发起HTTP请求后突然被杀死,服务端的处理取决于多种因素:1)TCP连接状态(正常关闭FIN或强制中断RST);2)HTTP协议版本(HTTP/1.1保持连接或HTTP/2多路复用);3)服务端执行阶段。典型情况包括:服务端可能继续执行但响应无法送达,日志记录499错误或连接重置。不同语言处理方式各异,如PHP默认终止脚本,Node.js则继续执行。建议通过检测客户端状态、配置超时和事务回滚来优雅处理中断,避免资源浪费和数据不一致。
2025-10-17 13:39:00
802
原创 PHP 数组 如何移动某个元素到某个元素前面
本文介绍了PHP中实现数组元素移动的多种方法,包括:1)使用数组切片和拼接的基础方法;2)利用array_splice函数的高效方案;3)处理关联数组的专用方法;4)基于回调函数的灵活定位方式。每种方法均包含详细实现代码和示例,涵盖数值数组、关联数组和多维数组等场景。文章还提供了性能优化版本,特别适合处理大型数组。这些方法可根据不同需求灵活选用,如简单数组推荐方法1或2,关联数组适用方法3,复杂条件则可用方法4的回调定位。
2025-09-30 11:48:50
305
原创 PHP 数组 如何将新元素加到数组第一个位置(支持指定key => value)
PHP关联数组添加元素到开头的方法有多种:1.使用数组联合运算符(+)快速合并;2.通过array_merge函数实现;3.使用array_splice灵活插入。需要注意键冲突处理、数字键顺序维护等问题。性能测试显示数组联合运算符最快,array_merge次之,array_splice最慢。实际应用场景包括配置默认值、HTTP头设置等。选择方法时应考虑键冲突处理需求和性能因素,数组联合运算符是大多数情况下的最佳选择。
2025-09-30 11:46:11
766
原创 SSH 连接中断后进程是否继续运行?
SSH连接中断后进程是否继续运行?关键取决于启动方式。默认情况下,SSH断开时进程会被终止,但通过特定方法可保持运行:1)直接前台运行会中断;2)后台运行但未隔离仍会终止;3)使用nohup、screen/tmux或systemd服务化可确保进程持续执行。最佳实践推荐nohup日志重定向或systemd服务化方案,后者支持自动重启和统一日志管理。只要正确隔离进程与SSH会话,网络切换、终端关闭等操作均不会影响后台任务执行。
2025-09-24 23:49:05
1272
docker_practice.pdf
2020-04-30
论文通用人工智能的火花:GPT-4 早期实验
2023-03-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅