フォルダーから画像ギャラリーを自動的に作成するスクリプトがあります。サムネイルが存在しない場合は、サムネイルも生成します。特定の状況を除いて、すべてが正常に機能します。サムネイル生成は、ページにアクセスするユーザーによって呼び出されます (Psudo CRON)。
wget (大きな画像)を使用してサーバーのギャラリーのフォルダーに画像をダウンロードしようとしましたが、同時に誰かがWebページにアクセスし、部分的にダウンロードされた画像からサムネイルが生成され、以下のような部分的なサムネイルが作成されました.
サムネイルを作成する前にこれを修正するために、ファイルの最終変更時刻と 600 マイクロ秒後の変更時刻を確認し始めました。それらが異なる場合は、画像のサムネイルの生成をスキップします。これは、アップロードがどこにもスタックしておらず、ファイルが常に更新されている場合に機能するはずです。ただし、アップロードが指定された時間間隔でファイルを更新していない場合は失敗します
私のコード
//loop
$atime = filemtime($images_dir . $file);
usleep(600);
$btime = filemtime($images_dir . $file);
/* file uploading checking */
if ($atime != $btime) {
continue;
}
// code to generate the thumbnail
この問題を解決する他の方法はありますか?
ここで、ユーザーはフォルダーに直接アクセスでき、ftp/別のスクリプトなどを使用して任意の方法でフォルダーにデータを入力できることに注意してください。つまり、アップロードはスクリプトによって制御されません。