2017-10-19 10 views
0

J'ai un grand nombre de fichiers image sur mon serveur (environ 900 000) et j'utilise Azure Client Library pour PHP pour faire une boucle et télécharger mes fichiers sur Azure Blob Storage. Mon script de téléchargement a bien fonctionné pendant environ 2 jours, puis s'est soudainement arrêté et est sorti en dessous de l'erreur.Erreur lors de l'envoi d'un grand nombre de fichiers vers le stockage BLOB

Oct 19 01:28:14 ik1-315-17878 php: PHP Fatal error: Uncaught exception 'MicrosoftAzure\Storage\Common\Exceptions\ServiceException' with message 'Fail:#012Code: 403#012Value: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.#012details (if any): AuthenticationFailed Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.#012RequestId:e7f247d6-001e-0022-142e-48abcc000000#012Time:2017-10-18T16:28:14.4980791ZRequest date header too old: 'Wed, 18 Oct 2017 16:12:27 GMT'.' in /home/t-matsumoto/GAZOU/vendor/microsoft/azure-storage/src/Common/Internal/ServiceRestProxy.php:486#012Stack trace:#012#0 /home/t-matsumoto/GAZOU/vendor/microsoft/azure-storage/src/Common/Internal/ServiceRestProxy.php(404): MicrosoftAzure\Storage\Common\Internal\ServiceRestProxy::throwIfError(Object(GuzzleHttp\Psr7\Respon in /home/t-matsumoto/GAZOU/vendor/microsoft/azure-storage/src/Common/Internal/ServiceRestProxy.php on line 486

J'ai cherché sur la cause, et il est probable que l'horodatage quand mon script a cette demande était trop vieux à comparer timestamp quand Azure a reçu la demande. Selon le message d'erreur ci-dessus, l'heure de la demande est "Mer, 18 Oct 2017 16:12:27 GMT", et l'heure de la réception de la demande est "2017-10-18T16: 28: 14.4980791Z" (environ 15 minutes de retard) . Mais ce que je ne comprends toujours pas, c'est que mon script a fonctionné pendant un certain temps sans erreur, et l'erreur s'est produite soudainement. Quelqu'un peut-il m'expliquer ce phénomène et cette solution pour que mon script fonctionne de manière stable sans erreur?

Mon script php ressemble ci-dessous

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); 
} 

Je Je pense ai téléchargement exemple de script de ce lien https://docs.microsoft.com/en-us/azure/storage/blobs/storage-php-how-to-use-blobs

Répondre

0

@Gaurav Mantri a répondu à votre question:

Azure storage error using Python SDK


Mais comme vous avez un grand nombre de fichiers image à télécharger sur le stockage Azure, je recommanderais d'utiliser AzCopy pour cela. AzCopy est un utilitaire de ligne de commande conçu pour copier des données vers et depuis Microsoft Azure Blob, File et Table en utilisant des commandes simples avec des performances optimales.

+0

J'ai lu l'article que vous avez partagé mais cela ne m'aide pas à expliquer mon cas. Pourquoi l'erreur ne s'est pas produite au début, et s'est produite quand le script a fonctionné pendant un moment. Est-ce que le téléchargement d'un grand nombre de fichiers au point ici a entraîné un décalage entre mon serveur et Azure? – leomidu