超过 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 次,但随着更多支付网关的添加和更多交易的排队,未来会增加。
就解决方案而言,我正在寻找
- 出于我的 cron 的目的禁用此检查,或者,
- 找到
$this->forward()->dispatch(...);
的替代方案,它仍然允许我使用自定义参数多次调用不同的控制器。
另一种方法是,我将所有交易传递给每个相应的支付网关,并且每个网关只调用一次 $this->forward()->dispatch()
,但是当我到达十个支付网关时,我会再次遇到这个问题。
forward
控制器插件允许您设置嵌套转发的最大数量。
在循环之前,我将嵌套转发的最大数量设置为我要循环的项目数:
$this->forward()->setMaxNestedForwards(count($transactions));
我的项目需要多个支付网关,所以我为每个支付网关设置了一个模块,并将适当的支付网关绑定到使用它的帐户。然后我将所有支付代码放在适当的模块控制器中。所有网关实现相同的接口以确保功能存在。
我现在 运行每晚使用 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 次,但随着更多支付网关的添加和更多交易的排队,未来会增加。
就解决方案而言,我正在寻找
- 出于我的 cron 的目的禁用此检查,或者,
- 找到
$this->forward()->dispatch(...);
的替代方案,它仍然允许我使用自定义参数多次调用不同的控制器。
另一种方法是,我将所有交易传递给每个相应的支付网关,并且每个网关只调用一次 $this->forward()->dispatch()
,但是当我到达十个支付网关时,我会再次遇到这个问题。
forward
控制器插件允许您设置嵌套转发的最大数量。
在循环之前,我将嵌套转发的最大数量设置为我要循环的项目数:
$this->forward()->setMaxNestedForwards(count($transactions));