9

ZipArchive() を使用して CentOS 5.6 および PHP 5.2.12 で実行されている私の php スクリプトは、1.6Gb を超える .zip ファイルを正常に作成しますが、2GB 以上の大きなアーカイブでは作成しません - PHP は明らかなエラーなしで中止されます。PHP エラー ログまたは stderr に何もありません。スクリプトはコマンドラインで実行されており、インタラクティブではありません。

スクリプトは約 8 分間実行され、一時アーカイブが大きくなり、ファイルサイズをチェックしている間、最後のリストは tmp ファイルのサイズが 2120011776 であることを示し、その後 tmp ファイルが消え、PHP スクリプトがロジックを通り抜け、アーカイブの作成後にコードを実行します.

何らかの理由で、top は CPU がまだ 95% であり、新しい tmp アーカイブ ファイルを作成していることを示しています。これをさらに 5 分以上実行し、サイレントに停止して未完成の tmp アーカイブ ファイルを残します。このテストでは、予想されるファイルの数は 4000 未満でした。

前述のスクリプトは、小さなアーカイブ ファイルを作成しても問題なく動作します。

大きなソース データのいくつかの異なるセットでテストされました - 大きなファイルでも同じ結果です。

この問題は、次の質問に似ています: PHP の zipArchive クラスのサイズ制限?

おそらく ls -l コマンドは 2K ブロックのカウントを返しているので、2120011776 は 4GB に近いと思いますが、そのサイズはバイト単位です - xxxx.zip.tmpxx ファイルのサイズです。

ありがとう!

4

4 に答える 4

-1

PHP で set_limit 変数を使用していますか。

を使用できます。Htacess または PHP スクリプト内。スクリプト内 set_time_limit(0); .htaccess php_value memory_limit 214572800; の内部。

于 2014-01-28T20:04:28.717 に答える
-2

php.ini の最大実行時間に設定があります
。おそらくこれが発生しています。
値を上げてみてください!

また、OS ごとに異なるファイル サイズ制限もあります。それも確認してください。

于 2011-04-21T14:12:10.673 に答える