我已经尝试过该thread上的所有解决方案以及Guzzle客户端,但没有一种适合我的设置。我的用例是长时间运行的操作,应该通过无害的常规操作按不规则的间隔触发。我想将进程委派给一个异步请求,而不是冻结而不进行解释。该线程上的解决方案的问题在于,有效负载落在了前端控制器上,但没有通过调用自动加载来实现。我不知道为什么会这样。 我已经尝试过Guzzle的sendAsync和postAsync,但是都没有将我的有效负载提交给控制器。 在comment中有一个希望的灯塔,声称这是可能的,但可能很困难。我想知道是否有人有实现逻辑。
我当前的实现方式是这样的
PostController::resolveCarts($conn, $cartsToResolve); // might take 100 hours. I don't care. The response is adequately handled in there. Just return
我现在想要的是将以上内容转换为
$client->postAsync('http://localhost/site/resolveCarts', ['Content-Type' =>' application/json'], ['itemsToPost' => $cartsToResolve])->then(function ($response) {}); // I tried every variation of alternating `body` with `json` to json encoding etc.
但是前端控制器会拦截并停止。我可以执行IO或日志记录,并且断言此处的代码有效。超出范围的任何内容都将被忽略。 我还没有尝试过,但是我想我可以使用cookie来通知前端控制器包括该处理程序(而不是自动加载它)并手动调用该方法。不确定这是最好的方法,因此我愿意接受您的建议。非常感谢。