gpt4 book ai didi

php - 如何将 php cronjob 拆分成多个部分

转载 作者:可可西里 更新时间:2023-11-01 00:39:36 25 4
gpt4 key购买 nike

有一个 PHP 脚本。它从外部 API 获取数据并将数据导入(更新/删除)到 WordPress 数据库(Woocommerce 产品)。有很多产品...要导入所有产品,脚本大约需要 2-3 小时。

问题是脚本执行时,内存没有清理,导致溢出。在那之后,脚本就默默地结束了,没有任何错误。

简而言之,脚本如下所示:

$products = getProductsFromApi();
foreach ($products as $key => $product) {
$this->import($product);
}

想法是将 cronjob 脚本分成几个部分:如果 $currentMemory > 100Mb 然后停止脚本并再次运行它,但不是从头开始,从它停止的那一刻开始。

如何实现?如果服务器有限制:每 2 小时只能执行 1 个 cronjob 脚本。

还有其他想法吗?

最佳答案

您可以使用 Gearman 等工具为导入流程创建队列和工作人员。您可以对每个工作人员进行编程,使其处理一定数量的产品,所需时间少于服务器的最大执行时间。

Gearman 还允许您控制可以同时运行的 worker 数量。因此,导入过程会更快,并且您将确保服务器资源不会被工作人员完全消耗。

关于php - 如何将 php cronjob 拆分成多个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48479922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com