避免替代PHP缓存(APC)并发问题

时间:2013-06-07 09:26:59

标签: php concurrency apc

我每秒在APC中存储大量变量。同时,我有一个CRON任务,它连续执行一个php进程,用于从APC读取变量,从APC中删除它并将其存储在数据库中。 php脚本获取前缀标识的所有变量。 问题是当PHP进程访问APC时,读取所有变量,从APC中删除它们并将其插入数据库,另一个进程(由CRON启动)可以读取相同的数据,因为它尚未删除,我会复制我的数据库中的数据。这有什么解决方案吗?也许这是APC限制?

提前致谢。

标记

1 个答案:

答案 0 :(得分:0)

首先,我很想知道这个解决方案背后的原因!非常感兴趣!

但这是定时工作的常见问题。您更严重的担心是,如果您的某个cron作业需要很长时间才能完成,而另一个作业启动,则可能会使服务器上的负载加倍,完成时需要两倍的时间,然后您最终会陷入循环把你的服务器关掉这是一个有趣的问题!

我之前通过设置一个开关来解决它,该开关通知代码上一个作业正在运行。当您的工作完成后,删除开关,下次您的cron将再次运行。您可以将该开关放在APC中。