0

これは私に適切な頭痛を与えているので、私は質問を落とすと思った

ファイルを 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

これに遭遇したことがありますか?なぜ突然機能しなくなったのかわかりません。誰にもアイデアはありますか?

読んでくれてありがとう

4

1 に答える 1

1

問題を再現できませんでした。コードを使用して 2 MB を超えるファイルをアップロードできました。いずれにせよ、あなたが抱えている問題は SSL/OpenSSL の破損に関連しています。詳細と解決方法については、次のリンクを参照してください。

于 2016-05-06T14:27:54.783 に答える