1

我编写的一些 PHP 代码将文件上传到 S3,然后调用 EC2 实例对上传的文件执行操作,我得到了不同的结果。

这是我做事的顺序-

1)使用S3类放文件

$result = s3 -> putObjectFile($uploadDIR, $bucket, $name, S3::ACL)

2) 检查 $result

if($result == "1") {
//file made it to s3

3) 使用 cURL 调用 EC2 实例并对 S3 中的文件执行操作

我将它与视频文件一起使用,当我上传一个小视频文件时它可以正常工作(例如 3MB),但对于较大的视频(例如 80MB),代码似乎没有超过第 1 步。文件被移动到 s3 好的,但我猜是一段时间后 PHP 放弃等待查看 $result == 1 ,因此不执行其余代码。

处理此类事情的最佳方法是什么?如何检测文件已上传到 S3,然后运行一些代码?

4

1 回答 1

4

对于大文件,上传它们所需的时间可能会高于脚本的max_execution_time

您可以只使用 set_time_limit() 函数,但对于网页来说它可能仍然不是一个好主意,因为脚本只会“挂”在那里而没有任何用户反馈(输出到浏览器)。

这可能会更好:

  1. 使用 set_time_limit() 所以脚本不会死。
  2. 将文件名存储在临时位置(数据库、会话等)并为其获取唯一 ID
  3. 输出带有一些 AJAX 代码的页面,以(重复)查询第二个脚本以获取文件的状态(已完成、已失败、未定义?)
  4. 在原始脚本上,等待操作完成并使用结果更新数据库。
于 2009-03-31T16:00:55.303 回答