【问题标题】:Function returns first and then calls another function to handle data [duplicate]函数先返回,然后调用另一个函数来处理数据[重复]
【发布时间】:2017-09-12 20:51:59
【问题描述】:

应用程序中使用了 MVC(模型-视图-控制器)框架。客户端(一个iOS App)和服务端使用http协议进行通信。

该函数名为upload_data,定义在名为profile.model.php 的模型文件中。在调用这个函数时,我希望它先简单地向客户端返回一个成功的消息,然后再调用另一个函数 process_data 来处理从数据库读取数据和向数据库写入数据等耗时的任务。

<?php
      function upload_data($data){
          // simply returns a successful message to the caller
      }

      function process_data($data){
         // handles time-consuming tasks
      }
?>

我只是想知道最好的方法是什么。谢谢。

【问题讨论】:

  • PHP 在服务器端处理所有内容,只有在客户端请求的每个服务器端活动完成后才会向客户端发送信息。如果您想覆盖此行为,请使用 AJAX 调用。最初调用upload_data,然后,创建一个同步调用来处理数据
  • @Thamilan 恕我直言,但这很荒谬。
  • @deceze,一旦一个函数返回一个值给客户端,它是否还有机会调用另一个函数?
  • @Thamilan 服务器不限于仅根据客户端请求进行操作;服务器可以完美地响应客户端然后继续做其他事情。不完全是 PHP 的默认 MO 以这种方式操作,但可以做到。
  • @deceze,说真的,我不知道。我只是假设在 OP 的情况下客户端正在等待回复:)

标签: php


【解决方案1】:

我认为您想在单个请求中向客户端发送两个响应 ..。 首先您要发送成功响应然后处理数据,处理后您需要发送其余数据。

如果是这样,那么您需要与网络服务器建立websocket connection。使用 websockets,您可以发送任意数量的响应和任意时间间隔。它基本上是您的应用程序和网络服务器之间的一致连接。

Ratchet 是一个使用 php 实现 web-sockets 的好库。

【讨论】:

    猜你喜欢
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2014-05-06
    • 2022-01-13
    相关资源
    最近更新 更多