在多个进程中运行一系列日常PHP脚本


Running a series of daily PHP scripts in multiple processes

希望您能提供帮助!我目前正在构建和测试一个PHP脚本,该脚本可以将数据从一个web系统移植到另一个网络系统(想想数据备份),该脚本需要每天为无限数量的用户运行。该脚本相当密集,具体取决于需要提取的数据量(到目前为止,我看到的最长执行时间约为30分钟)。

考虑到这一点,我显然不想一个接一个地运行它们,因为整个工作不会及时完成。因此,理想情况下,我希望有一些方法来安排作业,以便它可以同时运行多达十个备份(我可以随着服务器容量的增加而扩展)。当一个脚本完成时,它会在堆的顶部拾取下一个(一个而不是10个)并执行它,依此类推。现在,一些实例可能(在这个阶段很可能)会因致命错误而失败并死亡。这很好,因为我使用自定义错误处理程序来处理它,但显然我不希望一个实例的失败与其他实例有任何关系。

在阅读了这里的一些其他问题后,我看到了PHP forking和Supervisord的讨论,但老实说,回想7年前我的流程调度论文,我已经失败了!如果有可能的话,能得到一些关于如何实现这样的东西的建议真的很棒吗?感谢:)

我建议使用proc_open异步执行多个命令。如果备份过程本身是一个PHP脚本,则可以使用PHP二进制文件(例如PHP-mybackupscript.PHP)

运行它