超过10个嵌套转发吗?

时间:2018-12-10 17:55:24

标签: php zend-framework2

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

我现在每天晚上执行一次计划,以对每个帐户收取付款。我遇到的问题是,为了使适当的控制器运行,我在foreach循环内使用以下代码:

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

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

目前,我有两个付款网关(不久以后将会使用),每个网关将处理约20笔测试付款。当我运行cron命令时,出现错误:

  

检测到循环转发:嵌套转发超过10个

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

就解决方案而言,我要么选择

  • 出于我的计划目的禁用此支票,或者
  • 找到$this->forward()->dispatch(...);的替代方法,该方法仍然允许我使用自定义参数多次调用不同的控制器。

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

1 个答案:

答案 0 :(得分:0)

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

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

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