我正在寻找一个简单的locking守护进程,它通过TCP侦听客户端并处理locking请求。
我需要在MULTIPLE机器上同步并行PHP进程。 例如,一台机器可能会说:“我从现在开始locking'abcd'标识符,直到我死亡”,如果第二台机器说同一个“lockingabcd”,它的请求将被延迟,直到第一个释放“abcd”机。 如果获取进程意外死亡,标识符也会被释放(当它死亡,断开连接发生,所以locking守护进程可能会将此断开连接处理为locking释放)。
请注意,memcached add()在这种情况下不是很好,因为它不能处理意外的断开连接(重要的是:在许多情况下,进程可能会意外死亡,而且没有机会释放锁;锁也不能被超时释放,因为一些进程工作很长时间)。 我需要一个保持打开连接并关心它们的守护进程。
不确定你想要做什么。 亚马逊的简单队列服务可能适合吗?
http://aws.amazon.com/sqs/
他们在解释服务时说:
- 开发人员可以创build数量不受限制的Amazon SQS队列。
- 可以在美国东部(北维吉尼亚州),美国西部(北加利福尼亚州),欧盟(爱尔兰)和亚太地区(新加坡)地区的4个地区创build队列。
- 消息正文可以包含任何格式的最多64 KB的文本(默认值为8KB)。
- 消息可以保留在队列中长达14天(默认为4天)。
- 消息可以同时发送和读取。
- 收到消息时,在处理过程中会变为“locking”状态。 这使其他计算机不能同时处理消息。 如果消息处理失败,则locking将过期,消息将再次可用。 在应用程序需要更多处理时间的情况下,可以通过ChangeMessageVisibility操作dynamic更改“locking”超时。
- 开发人员可以通过基于标准的SOAP和Query接口访问Amazon SQS。
- 开发人员可以安全地与其他人共享Amazon SQS队列。 队列可以与其他AWS账户和匿名共享。 队列共享也可以通过IP地址和时间来限制。