希望你能帮忙!我目前正在构建和测试一个PHP脚本,该脚本将数据从一个Web系统移植到另一个Web系统(想想数据备份),这些数据需要每天为无限数量的用户运行。该脚本相当密集,具体取决于需要提取的数据量(到目前为止,我看到的最长执行时间约为30分钟)。
鉴于此,我显然不希望一个接一个地运行它们,因为整个工作不会及时完成。理想情况下,我希望有一些方法来安排作业,以便它可以同时运行多达十个(我可以扩展为服务器容量增加)备份。当一个脚本完成时,它会拾取堆栈顶部的下一个(单个堆而不是10个)执行它,依此类推。现在,有可能(并且在此阶段可能)某些实例将因致命错误而失败并死亡。这很好,因为我用自定义错误处理程序处理它,但显然我不希望一个实例的失败对其他实例有任何影响。
在这里阅读了其他一些问题之后,我已经看到了PHP forking和Supervisord的讨论,但说实话,让我回想起我的流程安排论文7年已经打败了我!如果能够实现这样的话,那么如何实现这样的建议真的很棒吗?谢谢:))
答案 0 :(得分:0)
我建议使用proc_open异步执行多个命令。如果备份过程本身就是一个PHP脚本,它可以使用php二进制文件运行(例如php mybackupscript.php)