このバッチ処理は、プロジェクト自体が何度も外注されているためであり、写真はあちこちに保存されており、サムネイルや均一サイズの写真は特別に生成されません。今回は、元の画像とテキストの混合データから写真を抽出して保存します。指定されたディレクトリに移動し、サイズをトリミングして対応するサムネイルを生成し、結果をデータベースに保存します。
バッチプログラムの処理過程では、プログラムの実行時間が長すぎて、504エラーなどが発生することは避けられません。結局のところ、サーバーの構成を調整することは、実際には良い解決策ではありません。環境…
でも、私はめんどくさいので、一度抽出した画像に対してページングリクエスト処理をしたくないのです^_^
ちなみに、一度に処理するデータから抽出できる画像の最大枚数は3000枚です~
本題に入りましょう。私たちの主な目的は、プログラムの実行時間を可能な限り延長して、キャプチャされるべきすべての画像がキャプチャされ、処理が完了してデータベースに書き込まれるようにすることです。
私たちの環境は nginx ベースの PHP5.6 です。まず、コードに注意する必要があります。これにより、php.ini の調整などの基本的な事項が回避されます。などはまだ調整する必要がありますが、ここでは紹介しません。それができない場合は、curl の CURLOPT_TIMEOUT を設定する必要があります (リモート画像をキャプチャするために CURL を使用します)。タイムアウト後にそれらをキャッチする場合は、何か問題があるはずなので、このタイムアウトが設定されていない場合は、実行中にエラーが報告され続けます。
次のステップは nginx プログラムの実行時間です:
fastcgi_send_timeout 900s;
この設定は nginx.conf にあります。値を変更すると、は追加されません。ご自身の状況に応じて時間を設定し、調整後にサービスを再起動してください。
MYSQL は、my.ini を変更して構成を追加または変更します。
wait_timeout=2880000
interactive_timeout=2880000
max_allowed_packet=100M
上記の後に、mysql を再起動して有効にします。設定、基本的にスキャン タイムアウト エラーが報告されるさまざまな状況を解消するために、プログラムを 2 日 3 晩実行し、合計 86G のイメージを収集および生成しました。
この操作は、特に本番環境ではあまりお勧めできません。最も重要なことは、バッチタスクの完了後に上記の設定を復元することです~
関連する推奨事項:
WeChatミニプログラムについてにおける画像処理の問題点のまとめ(上級)PHP共通画像処理クラス
PHP画像処理クラスのphpThumbパラメータの使い方の紹介
以上がPHPでバッチ画像処理を実行するとプログラムの実行がタイムアウトするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。