これは私に適切な頭痛を与えているので、私は質問を落とすと思った
ファイルを SoftLayer Object Storage コンテナーにアップロードする PHP アプリケーションがあります。Object Storage API と通信するために、 https://github.com/softlayer/softlayer-object-storage-phpの PHP バインディングを使用 し、composer.json ファイルからそれらを参照しています。
"softlayer/objectstorage": "dev-master",
オブジェクト コンテナ ファイルと URL の取得はすべて正常に機能しています。しかし、特にファイルのサイズによっては、ファイルのアップロードに問題があり続けています。数日前までは機能していましたが、最近何らかの理由で機能しなくなりました
ファイルのアップロードに使用している「すぐに使える」コードは次のとおりです。
$options = array('adapter' => ObjectStorage_Http_Client::SOCKET, 'timeout' => 10);
$objStorage = new ObjectStorage('', '', '', $options);
try {
$newFile = $objStorage->with('RemoteFilePath')
->setLocalFile($PathTolocalFile)
->create();
return $newFile->getUrl();
}
catch (Exception $e) {
return $e->getMessage();
}
何らかの理由で、1Mb 未満のファイルのアップロードが機能します。しかし、これよりも大きなサイズのファイルは、->create() リクエストが最終的にタイムアウトになり、例外はスローされず、ログに次のエラーが記録され続けます。
xxx.xxx.xxx.xx - [05/06/16 03:47:02] Warning: fwrite(): SSL operation failed with code 1. OpenSSL Error messages:
error:1409F07F:SSL routines:SSL3_WRITE_PENDING:bad write retry (/var/www/vendor/softlayer/objectstorage/lib/ObjectStorage/Http/Adapter/Socket.php:132)
これらのバインディングは基本的にラッパー ラウンド カールであるため、1M を超えるファイルを Softlayer ストレージ コンテナーにアップロードできるかどうかを自分で CURL でテストしました。開発マシンとステージング サーバーの両方で CURL を使用して成功したことがわかりました。
curl -i -XPUT -H "X-Auth-Token: {{MyAuthToken}}" --data-binary "@BigFile.txt" https://lon02.objectstorage.softlayer.net/v1/{{MyAuthTokenKey}}/{{MyContainer}}/BigFile.txt
これに遭遇したことがありますか?なぜ突然機能しなくなったのかわかりません。誰にもアイデアはありますか?
読んでくれてありがとう