【问题标题】:How can I tell if my PHP S3 class putObjectFile() process has completed?如何判断我的 PHP S3 类 putObjectFile() 进程是否已完成?
【发布时间】:2011-07-25 15:05:24
【问题描述】:

我正在使用未设计的 PHP S3 类使用以下语法将上传的音频文件放入我的亚马逊 S3 存储桶 -

$s3 = new S3("awsAccessKey", "awsSecretKey");
$s3->putObjectFile(params);

然后我的代码继续使用 CURL 调用另一个服务器来检索 S3 存储桶中的文件并对音频进行转码。

如何判断 putObject 何时成功完成?我注意到转码过程可能会失败,我认为这是因为文件尚未完成放入 S3。我假设在 putObject 行完成之前不会执行下一行代码,我是否需要将其包装在 if($s3->putObjectFile(...)) { } 中?

谢谢

【问题讨论】:

    标签: php file-upload upload amazon-s3


    【解决方案1】:

    你可以使用 trycatch()

    try
    {
       $s3 = new S3("awsAccessKey", "awsSecretKey");
       $s3->putObjectFile(params);
    }
    catch(Exception $e)
    {
       echo $e->getMessage();
    }
    

    在你的函数中你会抛出一个错误

    throw new exception('error, could not complete, ....');
    

    例如:

    if(!dosomething) //if something failed
    {
       throw new exception('error, could not complete, ....');
    }
    

    一旦抛出异常,它就会停止执行代码。然后你就回显出来,或者你可以将它存储在一个变量中,然后在任何你想要的地方回显

    【讨论】:

    • 我不确定我是否理解这一点。我真的希望代码等到 $s3->putObjectFile() 完成然后继续下一行代码。所以 - if($s3->putObjectFile()) { //仅在 putObjectFile() 完成时执行此代码。但如果 putObjectFile() 是异步的,这可能是不可能的?
    猜你喜欢
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 2013-09-27
    • 2014-06-08
    • 2013-01-14
    • 2011-07-27
    • 1970-01-01
    相关资源
    最近更新 更多