如何触发ECS服务中所有Fargate任务执行PHP缓存清理脚本?
需求与问题
背景
我需要从ECS服务中某一Fargate任务的PHP脚本出发,触发所有运行中的Fargate任务执行PHP脚本。核心场景是:这些任务都配置了NGINX FastCGI Cache,当管理员在CMS中更新内容时,必须清除所有任务的缓存。目前我的NGINX配置已经包含/purge/[path]端点,可通过fastcgi_cache_purge指令清理缓存。
现有临时方案(不够优化)
管理员在CMS中保存更新后,执行以下PHP代码片段:
- 通过AWS PHP SDK获取运行中的ECS任务数量
- 根据任务数循环执行cURL请求
- 调用
/purge/[path]接口(需要多次尝试,避免重复命中同一任务)
备选方案疑问(不清楚PHP实现方式)
我想到了几种替代方案,但不确定具体怎么用PHP实现,还有一些细节疑问:
- 共享文件系统方案:把
fastcgi_cache_path改为AWS EFS这类共享文件系统?性能会不会比tmpfs差?ECS支持tmpfs,但挂载后是多任务共享还是每个任务独立? - AWS SNS/SQS方案:如何编写订阅和发布事件的PHP脚本?
- Redis发布/订阅方案:具体怎么实现?ECS任务启动时如何启动长运行的订阅者?
- ECS Exec方案:已经接近实现,但目前仅支持交互式模式,没有
--non-interactive选项导致无法运行,有没有解决办法?
请求
请问有没有更优的方案?如果采用上述备选方案,能否给出PHP实现的方向?
内容的提问来源于stack exchange,提问作者WKFY
相关产品推荐
相关产品推荐

