如何在PHP中对事件进行排序以将文件上传到amazon S3

时间:2009-03-31 15:46:58

标签: php amazon-ec2 amazon-s3 detect

我得到了一些不同的结果,我编写了一些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,然后运行某些代码?

1 个答案:

答案 0 :(得分:4)

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

你可以使用set_time_limit()函数,但它仍然可能不适合网页,因为脚本只是“挂起”而没有任何用户反馈(输出到浏览器)。

这可能会更好:

  1. 使用set_time_limit()使脚本不会死。
  2. 将文件名存储在临时位置(数据库,会话等)并为其获取唯一ID
  3. 输出带有一些AJAX代码的页面(重复)查询文件状态的第二个脚本(FINISHED,FAILED,UNDEFINED?)
  4. 在原始脚本上,等待操作完成并使用结果更新数据库。