我有许多 Gearman 工作人员不断运行,保存用户页面浏览记录等内容。偶尔,我会更新 Gearman 工作人员使用的 PHP 代码。为了让工作人员切换到新代码,我杀死并重新启动了工作人员的 PHP 进程。
有什么更好的方法来做到这一点?据推测,当我终止其中一个工作进程时,我有时会丢失数据(尽管不是非常重要的数据)。
编辑:我找到了一个适合我的答案,并将其发布在下面。
解决方案1
一般来说,我使用带有 -r 标志的 unix 守护进程实用程序运行我的工作人员,并让它们在一项工作后过期。您的脚本将在每次迭代后正常结束,并且守护进程将自动重新启动。
您的员工对于一项工作可能会感到厌倦,但这对您来说可能并不像丢失数据那么重要
该解决方案还具有释放内存的优点。如果您正在执行大型作业,则可能会遇到内存问题,因为 PHP 5.3 之前的 GC 非常糟糕。
解决方案2
您还可以向所有退出脚本的工作人员添加退出函数。当您想重新启动时,只需给 gearman 打电话,以高优先级退出即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)