PHP ZipArchive,禁用输出/回声/日志

问题描述 投票:0回答:1

我在一个API中运行PHP ZipArchive,它在运行时在响应体中输出像adding: uploads/AUFIC/ps.csv (stored 0%),如何禁止打印这个输出?

这是包含ZipArchive的函数,它会安排一些文件,然后将这些文件压缩并上传到S3,然后返回该zip文件的URL:

    private function downloadPackage($schoolPrefix,$schoolZipPassword,$csvFilePath) {
    $ret = array('status' => false, "message" => "", "response" => array());
    try {
        $s3 = Aws\S3\S3Client::factory(array('region' => getenv('omitted_AWS_REGION_2')));
        $s3->registerStreamWrapper();
        $bucket = 'autoregistration.omitted.com';
        // production needs to be read from env var
        $prefix = 'production/PackageFiles/';
        $objects = $s3->getIterator('ListObjects', array(
            'Bucket' => $bucket,
            'Prefix' => $prefix
        ));
        $zip = new ZipArchive;
        $zipfilename = $schoolPrefix.'_omitted'.date('YmdHis').'.zip';
        $zipfilepath = 'uploads/'.$zipfilename;
        $zip->open($zipfilepath, ZipArchive::CREATE);
        foreach ($objects as $object) {
            if(basename($object['Key']) != 'PackageFiles')
            {
                $contents = file_get_contents("s3://{$bucket}/{$object['Key']}");
                $objectname = (basename($object['Key']) == 'SchoolPrefix.ps1') ? $schoolPrefix.'.ps1' : basename($object['Key']);
                $zip->addFromString($objectname, $contents);
            }
        }
        // pass the school prefix in params
        $school_objects = $s3->getIterator('ListObjects', array(
            'Bucket' => $bucket,
            'Prefix' => 'production/'.$schoolPrefix
        ));
        foreach ($school_objects as $school_object) {
            if(basename($school_object['Key']) == 'ps.csv')
            {
                $contents = file_get_contents("s3://{$bucket}/{$school_object['Key']}");
                $zip->addFromString(basename($school_object['Key']), $contents);
                $foundcsv = true;
            }
        }
        if(!$foundcsv) throw new Exception ('Can not find the csv file.', 400);

        $zip->close();
        $output = system("zip -P '".$schoolZipPassword."' ". $zipfilepath . " ".$csvFilePath);
        $key = 'production/'.$schoolPrefix.'/'.$zipfilename;
        $s3result = $s3->putObject(array('Bucket'=>$bucket,'Key' => $key, 'SourceFile' => $zipfilepath));
        //$ret['s3_url'] = $s3result['ObjectURL'];
        $ret['s3_url'] = $s3->getObjectUrl($bucket, $key, '+2 days');
        $ret['status'] = true;
        unlink($zipfilepath);
    } catch (Exception $e) {
        $ret['status'] = false;
        $ret['message'] = $e->getMessage();
    }
    return $ret;
}
php php-zip-archive
1个回答
0
投票

我会先改变这个:

return $ret;

对此:

return;
© www.soinside.com 2019 - 2024. All rights reserved.