short-link-jump项目需Linux环境运行,Windows不支持;启动失败常见原因包括未启用pcntl/posix扩展、debug模式未关闭、Redis/MySQL配置错误(Docker中误用127.0.0.1)、start.php权限不足;短链ID设为10000000需先清空数据或确保MAX(id)

short-link-jump 项目能直接用,但必须在 Linux 环境跑,Windows 下连多进程都起不来,别试。
php start.php start -d 启动失败的常见原因
- 没开
pcntl或posix扩展:运行php -m | grep -E "pcntl|posix"看是否在列表里;宝塔用户要在 PHP 设置里手动删掉禁用函数(如pcntl_fork、posix_kill) -
config/app.php还开着'debug' => true:生产环境必须设为false,否则 reload 会卡住、日志刷屏、Redis 连接可能被反复重建 - Redis 或 MySQL 连不上:检查
config/database.php和config/redis.php,密码、host、端口填的是容器名还是127.0.0.1?Docker 环境里写127.0.0.1是错的,得写redis或mysql -
start.php权限不对:Linux 下执行前加chmod +x start.php
短链 ID 从 10000000 开始的 SQL 怎么生效
- 先确认表引擎是
InnoDB(MyISAM 不支持事务级自增重置) - 执行前停掉所有写入服务,避免新记录插入导致自增值跳变
-
ALTER TABLE jump_link AUTO_INCREMENT = 10000000;只对下一条 INSERT 生效,不影响已有数据 - 如果表里已有数据,且最大
id超过 10000000,这条语句会被忽略——得先TRUNCATE或DELETE再执行,或者用SELECT MAX(id)+1动态算起始值
process/RecoveryFailedRedisDataCrontab::class 什么时候触发
- 它是个定时任务类,由 Webman 的
Crontab组件驱动,默认每分钟扫描一次 - 扫描条件是:MySQL 中
jump_link表里status = 1(启用),但 Redis 里对应short_id的 key 不存在 - 不是实时同步,所以短链刚创建后如果 Redis 挂了,最多等 60 秒才补进 Redis
- 如果你改过 Redis key 格式(比如加了前缀),这个恢复逻辑就失效了——它硬编码读取
$short_id作为 key,没走配置层
Webman 的常驻内存特性意味着:哪怕只是改了一行路由或中间件代码,也得 php start.php reload,而不是刷新页面。很多人卡在这一步,以为改了没生效,其实是进程还缓着旧 opcode。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











