検索

ホームページ  >  に質問  >  本文

php7.0+TP5 で ZipArchive を使用して大きなファイルを圧縮すると、タイムアウトとロードの問題が発生する

皆さんに聞きたいのですが、ファイルを圧縮すると、タイムアウト時間をどのように設定しても、圧縮リクエストで 504 タイムアウトが 1 分で表示され、nginx php は設定されていますが機能しません。管理ソフトウェアはphpstudy, the system centos7.

また質問なのですが、ZipArchiveを圧縮する際に、圧縮速度を上げたいのですが、どうすればよいでしょうか?圧縮中の最大サーバー負荷はわずか 16% です。

_Sun_Sun511日前710

全員に返信(2)返信します

  • 大瓶可乐@php.cn

    大瓶可乐@php.cn2023-07-07 16:22:38

    最初の質問に関して、Nginx と PHP でタイムアウトを設定しているにもかかわらず、504 タイムアウト エラーが発生する場合は、次の解決策を試すことができます。 1. PHP-FPM のタイムアウト設定を確認します。php -fpm を開きます。 conf ファイルで「request_terminate_timeout」パラメータを見つけて、その値を長い時間 (秒単位) に増やして、PHP-FPM を再起動します。 2. Nginx のタイムアウト設定を確認します: nginx.conf ファイルを開き、`http` ブロックに次のパラメータを追加または変更します:

    proxy_connect_timeout 600s;   
    proxy_send_timeout 600s;   
    proxy_read_timeout 600s;   
    fastcgi_send_timeout 600s;   
    fastcgi_read_timeout 600s;

    3. サーバーのリソース制限を確認します: サーバーのリソース ( CPU、メモリ、ディスク容量など)圧縮リクエストを処理するには十分です。サーバーのリソースが不十分な場合、圧縮プロセスに時間がかかり、タイムアウトが発生する可能性があります。 4. 圧縮アルゴリズムとパラメータを調整する: 一部の圧縮アルゴリズムは他の圧縮アルゴリズムよりも高速な場合があります。別の圧縮アルゴリズムを使用してみるか、ZipArchive のパラメータを調整して圧縮速度を向上させることができます。たとえば、`setCompressionMethod()` メソッドを使用して別の圧縮方法を設定したり、`setCompressionLevel()` メソッドを使用して圧縮レベルを調整したりできます。 2 番目の質問に関しては、サーバーの負荷が 16% に達した場合は、システム リソースが十分に活用されていないことを意味します。これは、ZipArchive 圧縮プロセスがディスクやネットワークの操作ではなく CPU の計算によって支配されていることが原因である可能性があります。この場合、圧縮速度を向上させるために次の方法を試すことができます。 1. より高速な圧縮アルゴリズムを使用します。一部の圧縮アルゴリズムは他の圧縮アルゴリズムよりも高速です。 Deflate アルゴリズム (`ZipArchive::CM_DEFLATE`) など、より高速な圧縮アルゴリズムを使用してみてください。 2. 圧縮パラメータを調整する: さまざまな圧縮レベルやウィンドウ サイズなどを設定するなど、ZipArchive パラメータを調整すると、圧縮速度が影響を受ける可能性があります。実際の状況に応じて最適化を試みることができます。 3. 並列処理: 圧縮する必要があるファイルが複数ある場合は、全体の圧縮速度を上げるために複数のファイルを並列処理することを検討してください。たとえば、マルチスレッドまたはプロセス プールを使用して、複数のファイルを同時に処理します。サーバーのパフォーマンスを最適化し、圧縮速度を高める場合は、十分なシステム リソースを確保し、サーバーの容量を超えてパフォーマンスの問題が発生しないように注意してください。さらに、サーバー リソースを賢明に使用し、関連する規制とベスト プラクティスを遵守することを忘れないでください。

    返事
    1
  • _Sun

    ありがとう、ブラザーコークさん。教えていただいたパラメータを設定すると、プログラムは約 150 秒に圧縮できます。しかし、後で Bad Gateway が報告されましたが、この領域に関する制限は本当に見つかりません。あとコーク兄さん、ZipArchiveの圧縮方法の設定方法を詳しく教えてください マニュアルも確認したのですが初心者なのですがよくわかりません。 。並列処理もありますが、それについて詳しく教えてください。ありがとう、コーラ!

    _Sun · 2023-08-22 17:03:05
  • キャンセル返事