2

Compass API を使用して大きなファイルをラックスペース クラウドにアップロードしようとしています: http://www.compasswebpublisher.com/php/rackspace-cloudfiles-php-api

小さなファイル (jpg) では問題なく動作しますが、ファイルが 100MB を超えるとスクリプトがクラッシュします。正確には、スクリプトが停止します。

$cf = new Compass_Service_Rackspace_Cloudfiles('myid', 'myApiKey', Compass_Service_Rackspace_Cloudfiles::UK_AUTHURL);
$cf->auth();
set_time_limit(60*60);
ini_set("memory_limit","256M");
ini_set('upload_max_filesize', '700M');
ini_set('post_max_size', '700M');
$contents = file_get_contents($path);
$cf->putObject('container/filename', $contents);

初めてメモリの問題だと思ったのですが、256M でもスクリプトが動作しません。

なぜそれが機能しないのですか?

どうもありがとう!

よろしく、PV

4

3 に答える 3

2

どのスクリプトを使用しようとしているのかはわかりませんが、適切に処理されていない限り、スクリプトのタイムアウトが原因でクラッシュする可能性があります。

フォームを使用して 100 MB のファイルを定期的にアップロードすることは、絶対に必要であり、スクリプトが制限を処理するように適切に作成されている場合を除き、お勧めしません。それがFTPの目的です。

于 2011-02-03T19:47:32.090 に答える
0

set_time_limit最初の解決策として、スクリプトをタイムアウトなしで最後まで実行できるようにするため、0 関数を渡すことをお勧めします。

2番目の解決策として、フロントエンドにpluploadライブラリを使用することをお勧めします。これにより、ファイルをチャンクごとにアップロードできます。詳細はこちらhttp://www.plupload.com/

于 2012-06-03T05:33:11.047 に答える
0

ファイルを Rackspace cloudfiles に送信するには、raskcpace クラウド API を使用できます。

ファイルをアップロードするワークフローは次のようになります。

  1. 最初にファイルをサーバーにアップロードします。
  2. ファイルを Web サーバーから Rackspace クラウド ファイル コンテナーに送信します。
  3. Web サーバーからファイルを削除するか、そのままにしておいてください。

PHP の input:// ストリームと XMLHttpRequest を使用して、ファイルをまとめて Web サーバーにアップロードできます。詳細はこちらhttp://www.webiny.com/blog/2012/05/07/webiny-file-upload-with-html5-and-ajax-using-php-streams/

https://github.com/rackspace/php-opencloudで Rackspace API を見つけることができます。

于 2013-09-10T09:16:28.190 に答える