我以前使用 Gearman 和 supervisor 来管理工作。
在这种情况下,我们使用的是 Amazon SQS,我花了一些时间试图弄清楚。
我已经从我们的主网络服务器设置了一个单独的微实例,用作图像处理服务器(目前纯粹是为了测试,它将在此实现上线之前升级并成为集群的一部分)
在这个微型实例上,我安装了 PHP 和 ImageMagick 以执行图像处理。
我还编写了一个从 Amazon SQS 接收消息的工作脚本。
一切正常,但是我需要这个脚本一遍又一遍地运行,以便不断检查消息。
我不喜欢运行连续循环的想法,因此开始研究其他方法,但收效甚微。
所以我的问题是什么通常被认为是做到这一点的最佳实践方式?
我担心内存问题,因为 PHP 并不是真正为此设计的,因此感觉就像运行脚本一段时间,然后停止并重新启动它可能是我最好的选择。
我有使用主管的经验(以确保齿轮工工作人员继续运行)并且想知道我是否可以简单地使用它来一遍又一遍地连续执行简单的 php 脚本?
我的想法如下:
- 设置 SQS 长轮询,以便脚本检查 20 秒。
- 使用带有 20 秒睡眠的 while 循环来保持此脚本一次运行一个小时
- 让所有这些都通过主管运行。当时间到了并且循环完成时,允许脚本退出。
- 然后主管应该自动重新启动它
这听起来可行吗?有没有更好的办法?通常认为在 PHP 中接收 SQS 消息的最佳实践是什么?
提前致谢