我有一个注册表单,它调用可以与我们 CRM 的 API 交互的 PHP 脚本,如下所示:
CRM API <--> PHP 脚本 <--> 注册表单
- 注册表单在一次 AJAX 调用中将一些信息传递给 PHP 脚本
- PHP 脚本对 CRM 运行十几个 API 调用以创建帐户并附加各种数据
- CRM 将它刚刚创建的新帐户 ID 返回到 PHP 脚本
- PHP 脚本将帐户 ID 传递回注册表单,此时 AJAX 调用完成并且注册表单可以继续。
问题是 #2,这十几个调用大约需要 20 秒才能完成,但是注册表所需的数据是在第一次 API 调用之后生成的,因此理论上它可以更快地返回该数据,并在没有服务器端的情况下完成其余的工作一直保持该 AJAX 调用打开。
我尝试了 flush() 和 ob_flush() ,它们在处理完成之前将帐户 ID 输出到客户端,但是 jQuery AJAX 连接保持打开状态,所以我仍然卡在等待在注册表单端关闭连接之前发生任何事情.
那么尽快将该帐户 ID 返回到表单的最简单方法是什么?
也许使用 curl 和 exec 突破?
if(signing up){
stuff
exec(curl myself, notsignup)
}
else {
bunch of api calls
}