2011-02-03 2 views
2

でクラウドに大きなファイルをアップロードスクリプトクラッシュ。さて、正確には、スクリプトはただ停止します。は、私はコンパスのAPIを使用してRackspaceのクラウドに大きなファイルをアップロードしようとしているPHP

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

+0

でRackspaceのAPIを見つけることができます。 – Tjorriemorrie

答えて

2

私はあなたが使用しようとしているものスクリプトわからないんだけど、それは気を取られていない限り、それはおそらく、スクリプトのタイムアウトによるクラッシュます。

絶対に必要なもので、スクリプトが制限を処理するのにうまく書かれていない限り、フォームを使用して定期的に100 MBファイルをアップロードすることはお勧めしません。これがFTPの目的です。

+0

FTP?確かにあなたはSCPを意味します... – gazarsgo

+0

@gazarsgo:私がセキュアなソリューションでFTPを代用しようとしていたら、私はSFTP FWIWに行くでしょう。しかし、OPがWebフォームを介してファイルをアップロードしているときは、それはちょうど賢明なことです。それはSFTPがもっと適切だっただろうと私は同意します。 – user183037

0

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

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

0

ファイルをラックスペースクラウドファイルに送信するために、raskcpaceクラウドAPIを使用できます。ファイルをuplaodする

ワークフローでは、まずサーバーに

  1. アップロードファイルになります。
  2. ウェブサーバーからラックスペースクラウドファイルコンテナにファイルを送信してください。
  3. ファイルをウェブサーバーから削除するか、そのまま使用してください。

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

あなたはそれがは、set_time_limit(0)を設定することにより、タイムアウトにいないことを確認してくださいhttps://github.com/rackspace/php-opencloud

関連する問題