异步请求动作
Asynchronous requestAction
请放心帮助我...:-)
"You are my only hope".
我需要异步执行一个动作数千次。该操作应该从外部 API 获取电子邮件内容并且它位于不同的控制器中,因此我使用 requestAction 来获取它。当我得到所有结果时,这 1000 封电子邮件内容在一个请求期间作为 1000 封电子邮件发送,使用其他 API。
不幸的是,当运行顺序执行时,需要花费大量时间,所以我需要运行这些异步请求。
我的问题是:
我可以执行
$this->requestAction($myUrl)
...并行?例如一次 100 个请求?我在 PHP 中看到了一些异步示例,但它们都使用静态文件,我需要保留 CakePHP 结构才能使用 requestAction .
感谢所有能提供帮助的人!
编辑: 顺便说一下,当我尝试通过 fopen($url, 'r');然后stream get contents效率比最差,但也许可以提高。不知道,但 requestAction 似乎绝对是更好的选择(我认为)。
最后,我无法找到使用 requestAction 的解决方案,但我能够将代码提取到独立的 php 文件中,然后使用 include 方法进行处理。
最有趣的部分,异步请求,是使用名为 cURL-easy 的优秀库并在我的实用函数的帮助下完成的.你可以在这里阅读它(如何安装和使用它):
您有什么理由不为此使用 shell 吗?
请看一下:CakePHP Shells
"Deferred Execution" 可能是你想要的,基本上你想发送一个命令而不是让用户等待它?如果是这样,那么您可以使用消息队列来轻松处理这个问题。
我们使用 CakeResque 和 Redis 发送 1000 封电子邮件并执行其他 API 调用
CakeResque - Deferred Processing for CakePHP
还有其他可用的消息队列,但这很容易上手,可能不需要对您的代码做太多更改。
请放心帮助我...:-)
"You are my only hope".
我需要异步执行一个动作数千次。该操作应该从外部 API 获取电子邮件内容并且它位于不同的控制器中,因此我使用 requestAction 来获取它。当我得到所有结果时,这 1000 封电子邮件内容在一个请求期间作为 1000 封电子邮件发送,使用其他 API。
不幸的是,当运行顺序执行时,需要花费大量时间,所以我需要运行这些异步请求。
我的问题是: 我可以执行
$this->requestAction($myUrl)
...并行?例如一次 100 个请求?我在 PHP 中看到了一些异步示例,但它们都使用静态文件,我需要保留 CakePHP 结构才能使用 requestAction .
感谢所有能提供帮助的人!
编辑: 顺便说一下,当我尝试通过 fopen($url, 'r');然后stream get contents效率比最差,但也许可以提高。不知道,但 requestAction 似乎绝对是更好的选择(我认为)。
最后,我无法找到使用 requestAction 的解决方案,但我能够将代码提取到独立的 php 文件中,然后使用 include 方法进行处理。
最有趣的部分,异步请求,是使用名为 cURL-easy 的优秀库并在我的实用函数的帮助下完成的.你可以在这里阅读它(如何安装和使用它):
您有什么理由不为此使用 shell 吗? 请看一下:CakePHP Shells
"Deferred Execution" 可能是你想要的,基本上你想发送一个命令而不是让用户等待它?如果是这样,那么您可以使用消息队列来轻松处理这个问题。
我们使用 CakeResque 和 Redis 发送 1000 封电子邮件并执行其他 API 调用
CakeResque - Deferred Processing for CakePHP
还有其他可用的消息队列,但这很容易上手,可能不需要对您的代码做太多更改。