【问题标题】:Making async calls for each record in php对php中的每条记录进行异步调用
【发布时间】:2021-02-13 05:47:04
【问题描述】:

我有一个包含 100 条记录的文件。我想读取每条记录并将其传递给另一个函数。 但是,由于有 100 条记录,我希望以异步方式触发。

当前代码:

foreach ($records as $record) {
   $this->myFunction($record);  //how to make this trigger all the function calls in one go ?
}

public function myFunction($record) {
   //api call1;
   //api call2;
   //....
}

【问题讨论】:

  • 您是否使用curl 执行API 调用?你可以使用curl_multi
  • 除此之外,PHP 没有原生异步线程。
  • 您可能不想在另一个线程中执行此操作。 Apache(PHP 最常见的服务器之一)每个请求使用一个线程。线程数有限制。如果增加每个请求的线程数,就会减少可能同时发生的请求数量
  • @Barmar 这些 API 调用应该为每条记录按顺序运行
  • 你能详细说明异步性质吗?您想执行其他 PHP 工作,还是计划显示进度条?这是 GUI 还是 CLI?我建议查看队列和任务运行器。

标签: php asynchronous slim guzzle


【解决方案1】:

恕我直言......“不,你真的没有。”

您确实想要“点燃又一支燃烧的箭并将其射向空中”,这样您现在有 100 支燃烧的箭射在目标上,而明天可能有 400 支。 " 您需要对流程进行控制。无论需要处理多少个“工作单元”,您都需要控制可以同时处理多少个。需要一个所谓的“工作流程 引擎。” Google it ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2015-12-30
    • 1970-01-01
    • 2015-01-11
    相关资源
    最近更新 更多