All Products
Search
Document Center

Object Storage Service:Transfer acceleration (PHP SDK V2)

Last Updated:Aug 05, 2025

Transfer acceleration improves the speed of access to OSS for users across the world. This feature is suitable for scenarios such as long-distance data transmission and uploading or downloading large files that are gigabytes or terabytes in size.

Precautions

  • The sample code in this topic uses the China (Hangzhou) region as an example. The region ID is cn-hangzhou. By default, the public endpoint is used. If you want to access OSS from other Alibaba Cloud services in the same region, you must use an internal endpoint. For more information about the regions and endpoints that OSS supports, see Regions and endpoints.

Sample code

Enable transfer acceleration

The following code provides an example of how to enable the transfer acceleration feature for a bucket:

<?php

// Import the autoloader file to load dependencies.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Define the descriptions of command line arguments.
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // The region is required. The region where the bucket is located.
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // The endpoint is optional. The domain name that can be used by other services to access OSS.
    "bucket" => ['help' => 'The name of the bucket', 'required' => True], // The bucket name is required.
];

// Generate a list of long options to parse command line arguments.
$longopts = \array_map(function ($key) {
    return "$key:"; // A colon is added after each parameter to indicate that a value is required.
}, array_keys($optsdesc));

// Parse command line arguments.
$options = getopt("", $longopts);

// Check whether required parameters are missing.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // Prompt the user that a required parameter is missing.
        exit(1);
    }
}

// Obtain the values of command line arguments.
$region = $options["region"]; // The region where the bucket is located.
$bucket = $options["bucket"]; // The bucket name.

// Load credentials, including the AccessKey ID and AccessKey secret, from environment variables.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Use the default configurations of the SDK.
$cfg = Oss\Config::loadDefault();

// Set the credentials provider.
$cfg->setCredentialsProvider($credentialsProvider);

// Set the region.
$cfg->setRegion($region);

// If an endpoint is provided, set the endpoint.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Create an OSS client instance.
$client = new Oss\Client($cfg);

// Create a request object to enable transfer acceleration for the bucket.
$request = new Oss\Models\PutBucketTransferAccelerationRequest(
    bucket: $bucket, // The bucket name.
    transferAccelerationConfiguration: new Oss\Models\TransferAccelerationConfiguration(
        enabled: true // Enable transfer acceleration.
    )
);

// Call the putBucketTransferAcceleration method to enable transfer acceleration for the bucket.
$result = $client->putBucketTransferAcceleration($request);

// Print the result.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // The HTTP status code of the response.
    'request id:' . $result->requestId . PHP_EOL     // The unique ID of the request.
);

Query the transfer acceleration status

The following code provides an example of how to query the transfer acceleration status of a bucket:

<?php

// Import the autoloader file to load dependencies.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Define the descriptions of command line arguments.
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // The region is required. The region where the bucket is located.
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // The endpoint is optional. The domain name that can be used by other services to access OSS.
    "bucket" => ['help' => 'The name of the bucket', 'required' => True], // The bucket name is required.
];

// Generate a list of long options to parse command line arguments.
$longopts = \array_map(function ($key) {
    return "$key:"; // A colon is added after each parameter to indicate that a value is required.
}, array_keys($optsdesc));

// Parse command line arguments.
$options = getopt("", $longopts);

// Check whether required parameters are missing.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help"; // Prompt the user that a required parameter is missing.
        exit(1);
    }
}

// Obtain the values of command line arguments.
$region = $options["region"]; // The region where the bucket is located.
$bucket = $options["bucket"]; // The bucket name.

// Load credentials, including the AccessKey ID and AccessKey secret, from environment variables.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Use the default configurations of the SDK.
$cfg = Oss\Config::loadDefault();

// Set the credentials provider.
$cfg->setCredentialsProvider($credentialsProvider);

// Set the region.
$cfg->setRegion($region);

// If an endpoint is provided, set the endpoint.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Create an OSS client instance.
$client = new Oss\Client($cfg);

// Create a request object to query the transfer acceleration status of the bucket.
$request = new Oss\Models\GetBucketTransferAccelerationRequest(
    bucket: $bucket // The bucket name.
);

// Call the getBucketTransferAcceleration method to query the transfer acceleration status of the bucket.
$result = $client->getBucketTransferAcceleration($request);

// Print the result.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // The HTTP status code of the response.
    'request id:' . $result->requestId . PHP_EOL .   // The unique ID of the request.
    'transfer acceleration status:' . var_export($result->transferAccelerationConfiguration->enabled, true) . PHP_EOL // The status that indicates whether transfer acceleration is enabled.
);

References