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
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