0

リモート デバイスから画像を受信して​​データベースに保存する PHP スクリプトがあります。このスクリプトは Apache から起動され、最初にアップロード対象を定義するヘッダーを受け取り、次にアップロードされた画像のコンテンツをすべて単一のマルチパート転送として受け取ります。画像が正常に追加されると、デバイスの確認が返信されます。

問題は、接続があまり信頼できないことです。送信がタイムアウトすることがあります。確認を受信しなかった場合、デバイスはしばらくしてからデータを再送信するため、問題にはなりません。送信が途中で中断された場合を除いて、Apache は通常どおりスクリプトを起動し、スクリプトは不完全な画像セットをデータベースに喜んで保存し、作成タイムスタンプを一意のキーとして使用します。その後、リモート デバイスはデータを再送信し、スクリプトは正しく受信しますが、一意のキーが破損したデータによって既に取得されているため、データを保存できません。

PHPスクリプト内から、不完全なマルチパート転送で起動されたことを伝えるか、転送が正常に終了しなかった場合にApacheが起動しないようにする信頼できる方法はありますか?

(リモートデバイスから受信したデータベース構造やフォーマットを実際に変更することはできません。)

4

1 に答える 1

1

送信タイムアウトについては、デバイスのアプリケーション コードを確認してください。接続が遅すぎて、制限時間に達するとブレーキがかかる可能性があります。その場合、Apache サーバーは、Content-Length ヘッダーが一致しないにもかかわらず、部分的に受信したデータで php スクリプトを実行します。

于 2013-03-04T10:13:52.223 に答える