Php &引用;“请求日期标题太旧”;将大量文件上载到blob存储时出错

Php &引用;“请求日期标题太旧”;将大量文件上载到blob存储时出错,php,azure,azure-storage-blobs,Php,Azure,Azure Storage Blobs,我的服务器上有大量图像文件(约900000),我正在使用Azure Client Library for PHP进行循环,并将文件上载到Azure Blob存储。我的上传脚本运行了大约2天,然后突然停止并输出以下错误 10月19日01:28:14 ik1-315-17878 php:php致命错误:未捕获 异常“MicrosoftAzure\Storage\Common\Exceptions\ServiceException” 带有消息“Fail:#012代码:403#012值:服务器无法访问”

我的服务器上有大量图像文件(约900000),我正在使用Azure Client Library for PHP进行循环,并将文件上载到Azure Blob存储。我的上传脚本运行了大约2天,然后突然停止并输出以下错误

10月19日01:28:14 ik1-315-17878 php:php致命错误:未捕获 异常“MicrosoftAzure\Storage\Common\Exceptions\ServiceException” 带有消息“Fail:#012代码:403#012值:服务器无法访问” 验证请求。请确保授权标头的值 格式正确,包括签名。#详细信息(如有): 身份验证失败服务器 验证请求失败。确保 授权标头的格式正确,包括 签名.#012请求ID:e7f247d6-001e-0022-142e-48abcc000000#012时间:2017-10-18T16:28:14.4980791ZRequest 日期标题太旧:“2017年10月18日星期三16:12:27 格林尼治标准时间 /home/t-matsumoto/GAZOU/vendor/microsoft/azure storage/src/Common/Internal/ServiceRestProxy.php:486#012Stack 跟踪:#012#0 /home/t-matsumoto/GAZOU/vendor/microsoft/azure storage/src/Common/Internal/ServiceRestProxy.php(404): MicrosoftAzure\Storage\Common\Internal\ServiceRestProxy::Throwiferor(对象(GuzzleHttp\Psr7\Respon 在里面 /home/t-matsumoto/GAZOU/vendor/microsoft/azure storage/src/Common/Internal/ServiceRestProxy.php 在线486

我已经搜索了原因,这可能是因为我的脚本发出请求时的时间戳与Azure收到请求时的时间戳相比太旧了。根据上面的错误消息,发出请求的时间是“Wed,2017年10月18日16:12:27 GMT”,收到请求的时间是“2017-10-18T16:28:14.4980791Z”(大约晚了15分钟)。但我仍然不明白的是,为什么我的脚本运行了一段时间没有出现错误,然后错误突然发生。有谁能向我解释一下这种现象和解决方案,使我的脚本稳定运行,没有错误

我的php脚本如下所示

    require_once 'vendor/autoload.php';

    use MicrosoftAzure\Storage\Common\ServicesBuilder;
    use MicrosoftAzure\Storage\Common\ServiceException;

    $connectionString = "DefaultEndpointsProtocol=http;AccountName=<accountNameHere>;AccountKey=<accountKeyHere>";

    // Create blob REST proxy.
    $blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString);

foreach ($myListFiles as $filename) {
    $content = fopen($filename, "r");
    $blob_name = "myblob";

    //Upload blob
    $blobRestProxy->createBlockBlob("mycontainer", $blob_name, $content);
}
require_once'vendor/autoload.php';
使用MicrosoftAzure\Storage\Common\ServicesBuilder;
使用MicrosoftAzure\Storage\Common\ServiceException;

$connectionString=“DefaultEndpointsProtocol=http;AccountName=

我想@Gaurav Mantri已经回答了您的问题:



但是,由于您有大量图像文件要上载到Azure存储,我建议您使用。AzCopy是一个命令行实用程序,用于使用性能最佳的简单命令向Microsoft Azure Blob、文件和表存储复制数据。

我想@Gaurav Mantri已经回答了您的问题:



但是,由于您有大量图像文件要上载到Azure存储,我建议您使用。AzCopy是一个命令行实用程序,用于使用性能最佳的简单命令将数据复制到Microsoft Azure Blob、文件和表存储中或从中复制数据。

我已经阅读了您共享的文章,但它仍然无法帮助我进行编辑解释我的情况。为什么一开始错误没有发生,并且是在脚本运行一段时间后发生的。上传大量文件是否就是导致我的服务器和Azure之间出现时间延迟的原因?我已经阅读了您共享的文章,但它仍然无法帮助我解释我的情况。为什么一开始错误没有发生,而在脚本运行了一段时间。上载大量文件是否是导致我的服务器和Azure之间出现时间延迟的原因?