0

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

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

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

4

1 回答 1

0

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

于 2013-06-26T21:52:48.073 回答