Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中使用file_get_contents同时下载多个文件?_Php_Amazon S3 - Fatal编程技术网

在php中使用file_get_contents同时下载多个文件?

在php中使用file_get_contents同时下载多个文件?,php,amazon-s3,Php,Amazon S3,UDDATE:这是一个S3桶问题(见答案) 我希望上传一些代码,从S3 bucket读取文件,S3 bucket使用file_get_contents命令一次下载一个文件 开始 file_get_contents(s3://file1.json) 等待完成,然后开始下一次下载: file_get_contents(s3://file2.json) 我想让他们立刻开始,以节省时间。像这样: 同时启动两个: file_get_contents(s3://file1.json) file_get_

UDDATE:这是一个S3桶问题(见答案)

我希望上传一些代码,从S3 bucket读取文件,S3 bucket使用file_get_contents命令一次下载一个文件

开始

file_get_contents(s3://file1.json)
等待完成,然后开始下一次下载:

file_get_contents(s3://file2.json)
我想让他们立刻开始,以节省时间。像这样:

同时启动两个:

file_get_contents(s3://file1.json)
file_get_contents(s3://file2.json)
等待他们同时完成

我见过多次curl请求,但在这个主题上没有文件内容,可能吗

编辑:目前我看到的代码使用s3://这似乎不适用于curl。这是一种获取Amazon S3存储桶的方法

EDIT2:当前代码的示例:

    function get_json_file( $filename = false ){

        if(!$filename) return false;

        // builds s3://somefile.on.amazon.com/file.json
        $path = $this->get_json_filename( $filename ); 

        if(!$filename || !file_exists($path)){
            return false;
        }
        elseif(file_exists($path))  {
            $data = file_get_contents($path);
        }
        else $data = false;
        return ( empty( $data ) ? false : json_decode( $data , true ));

    }

答:S3安全,需要特殊URI

谢谢你们的回复。今天早些时候,当我问这个问题时,我的回答有点离谱

这是交易,我们使用的php版本不允许线程。因此,要请求多个URL,需要使用multi-curl选项。s://以某种方式处理了一个我以前错过的S3类文件。因此有了一个奇怪的名字

同样重要的是,如果您不关心保护S3上的数据,您可以将其公开,而不存在此问题。在我的例子中,需要对数据进行某种程度的保护,以便在URI中需要一些东西

您可以使用Amazon的S3类从S3上的URI和bucket名称生成安全链接。这将返回与bucket一起使用的正确URL。S3类可以手动下载,也可以通过laravel中的composer安装。它要求您安装一个具有密钥的用户,以便在AWS控制台中访问此功能

$bucketName = "my-amazon-bucket";
$uri = "/somefile.txt"
$secure_url = $s3->getObjectUrl($bucketName, $uri, '+5 minutes');
这将生成一个有效的URL来访问S3上的文件,该文件可以与curl等一起使用

https://domain.s3.amazonaws.com/bucket/filename.zip?AWSAccessKeyId=myaccesskey&Expires=1305311393&Signature=mysignature

现在我相信你知道每个人心中的问题,什么是
s3
?常数?因为,
是变量或常量的无效命名。如果您希望一个脚本使用多个
线程,请使用curl或某种异步include
file\u get\u contents()
只是一个来自资源的get请求。s3://由于某种原因,它可以正常工作,这是Amazon获取数据的私有方式。我不能使用s3://来访问它,因为它看起来像是curl;php-f downloader.php file2.json
?这是一个想法,但实际上它只需要读入一个变量。