超过 10 个嵌套转发?

Exceeding 10 nested forwards?

我的项目需要多个支付网关,所以我为每个支付网关设置了一个模块,并将适当的支付网关绑定到使用它的帐户。然后我将所有支付代码放在适当的模块控制器中。所有网关实现相同的接口以确保功能存在。

我现在 运行每晚使用 cron 为每个帐户收取费用。我遇到的问题是,为了让适当的控制器到达 运行,我在 foreach 循环中使用了以下代码:

$response = $this->forward()->dispatch(sprintf('PaymentGateway\%s\Controller\Index', ucwords($pg->code)), $params);

其中 $pg->code 是分配给帐户的支付网关。

目前我有两个支付网关(这将在不久的将来增加),每个网关要处理大约 20 个测试付款。当我 运行 cron 命令时出现错误:

Circular forwarding detected: greater than 10 nested forwards

在这种情况下,我需要它 运行 40 次,但随着更多支付网关的添加和更多交易的排队,未来会增加。

就解决方案而言,我正在寻找

另一种方法是,我将所有交易传递给每个相应的支付网关,并且每个网关只调用一次 $this->forward()->dispatch(),但是当我到达十个支付网关时,我会再次遇到这个问题。

forward 控制器插件允许您设置嵌套转发的最大数量。

在循环之前,我将嵌套转发的最大数量设置为我要循环的项目数:

$this->forward()->setMaxNestedForwards(count($transactions));