php应用程序中的关键代码部分?
好吧,在我看来这有点复杂,我希望我能解释清楚。如果有什么不清楚的地方,请评论,这样我就可以完善这个问题 我想处理用户文件上传到第三台服务器 所以我们有php应用程序中的关键代码部分?,php,api,rest,file-upload,Php,Api,Rest,File Upload,好吧,在我看来这有点复杂,我希望我能解释清楚。如果有什么不清楚的地方,请评论,这样我就可以完善这个问题 我想处理用户文件上传到第三台服务器 所以我们有 用户 网站(运行网站的服务器) 存储服务器(接收文件的服务器) 流程应该如下所示: 该网站从storage clouds网关请求上传url,该url直接指向最终的存储服务器(类似于)。与请求一起发送“目标路径”(特定于网站且全局唯一)和重定向url 网站以存储服务器上载url为目标生成上载表单,用户选择一个文件并单击提交按钮。存储服务器处理p
- 用户
- 网站(运行网站的服务器)
- 存储服务器(接收文件的服务器)
'/tmp directory/'.sha1(上面的目标路径)
),并将文件重定向回网站指定的重定向url。“目标路径”也被传递- 网站现在将en条目写入自己的数据库,并向存储api发出restful请求(已签名,网站必须使用秘密令牌进行身份验证),该存储api
- 将文件从其在存储服务器上的临时位置复制到其最终位置(这应该很快,因为它只是一个重命名)
- 同一rest请求还将在存储网络数据库中插入一个数据库行,并将网站id作为所有者
对于这个问题有什么想法或最佳实践吗 我不确定我是否会把这称为“最佳实践”,但对解决此类问题的一般方法有一些想法。当然,其中之一是允许以异步方式向存储服务器发送REST请求事务,可以通过监听传入请求的守护进程(可以通过监视文件的更改,也可以通过套接字、共享内存、数据库,以及您认为对环境中的IPC最有利的任何方式)执行或者是一个非常频繁地运行的cron作业,它将拾取并传递文件。这样做的好处是,您可以向上载文件的用户发送一条快速消息,而后台进程可以尝试,如果REST服务存在连接问题,请重试。您甚至可以进行一些AJAX轮询,以便用户在完成REST过程时可以看到一条漂亮的JS消息。如果我没有看错,您正在执行脚本中的关键操作,该脚本在存储服务将用户重定向回您的网站时调用 我认为有两种方法可以确保关键步骤的完整执行:
at
队列,也可以复杂到有一个专用的队列管理守护程序,就像LrdCasimir建议的那样