镜像同步引擎不参与包删除,问题根源是本地元数据缓存未刷新、composer.lock残留及并发写冲突;删包后需手动清缓存、验证lock文件、关闭干扰进程并合理配置parallel-downloads。

镜像同步引擎本身不参与包删除操作——Composer 删除包时根本不会触碰镜像源,所谓“同步引擎异常”是误判。真正出问题的,是本地元数据缓存、锁文件残留和并发写冲突这三块。
为什么删包后 composer show 还能看到旧包
这不是镜像没同步,而是本地元数据缓存没刷新。Composer 会把 packages.json 和 provider-*.json 缓存在 ~/.composer/cache/repo/ 下,哪怕你刚执行了 composer remove,只要缓存里还有对应包的 provider 记录,composer show 就可能从缓存里捞出已删包的元信息。
- 手动验证:运行
curl -I https://mirrors.aliyun.com/composer/p/vendor/package.json,HTTP 404 才说明镜像侧真没了 - 清元数据缓存:删掉对应镜像缓存目录,例如
rm -rf ~/.composer/cache/repo/https---mirrors.aliyun.com-composer - 别信
composer clear-cache:它只清files/和部分repo/,不保证删干净 provider 缓存
删包后 install/update 仍拉错版本的根源
问题不在镜像,而在 composer.lock 文件残留或未更新。只要 lock 文件里还记着某个包的 hash 和 version,Composer 就会按图索骥去镜像源拉那个 ZIP,哪怕你已在 composer.json 里删了它。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 执行
composer remove vendor/package后,必须确认composer.lock中该包条目已消失;否则下次install仍会还原 - 如果 lock 文件被 Git 保留或手动生成过,删完包后要跑一次
composer update --lock强制重写 lock - 项目级
repositories字段存在时,parallel-downloads被强制关闭,大批量删+装过程会串行化,放大元数据读取延迟,看起来像“卡在旧版本”
Windows 下删包失败时,镜像配置反而成干扰项
报 Could not delete 或 Permission denied,90% 是文件句柄占用,但很多人会下意识去调镜像——结果白折腾。镜像地址对删除流程零影响,但它会影响后续 install 的并发行为,间接拖慢恢复节奏。
- 先关 IDE(特别是打开了
vendor/的 PhpStorm/VSCode)、杀毒软件实时扫描、PHP 常驻进程(Swoole/Octane) - 用
robocopy "empty" "vendor\package" /s /mir替代手动删目录,更容忍占用 - 删完再切镜像没意义;但如果之前用了低并发设置(如
parallel-downloads=2),恢复时可临时设为4加速重装
最常被忽略的一点:删包不是原子动作,composer remove 只改声明和 lock,vendor/ 目录残留是设计使然,不是 bug。真正触发物理清理的是后续的 install 或 update --with-dependencies ——而这个步骤一旦因镜像元数据陈旧或并发设置不当卡住,就会让人误以为“镜像同步崩了”。










