0

サーバーとの共有ドライブがあります。その共有ドライブには、写真部門によって定期的に処理される画像がいくつかあります。私は自分のWebサービスを作成し、スケジューラを使用してそれを呼び出す必要があり(毎週水曜日としましょう)、新しい画像がある場合(最後の呼び出し(チェック)から)、それらを使用してWebサイトに表示する必要があります。私は自分の戦略に疑問を持っています。私が正しい方向に進んでいることを確認するために、あなたの確認が必要です:

私の戦略:

1)phpのscandirを使用してドライブをスキャンし、その特定のフォルダー内のすべての画像を取得します2)新しい画像を取得するたびに、IDでデータベースに配置します(画像はIDに基づいて保存されます)。3) 来週、Web サービスを実行するときに、画像がデータベースにあるかどうかを確認します。それを追加して新しいイメージとして想定しない場合、...

もっと良いアイデアはありますか?

4

1 に答える 1

1

あなたのアプローチはうまく聞こえます。ただし、ファイルが作成された日付を確認することで、データベースがなくても実行できます。最後にチェックを実行したときよりも最近作成されたファイルはすべて新しいファイルであると想定してください。したがって、先週の水曜日以降に作成されたファイルはすべて新しいファイルです。

$dirPath='/path/of/your/images';
$files=scandir($dirPath);
//assuming this is in fact once a week, 
//adjust '$lastCheck' based on the schedule this will run
$lastCheck=strtotime("-7 day"); 
foreach($files as $file)
{
    if (is_file("$dirPath/$file") &&  !is_link("$dirPath/$file") ) //make sure its not a directory or symlink
    {
        $createTime=filectime("$dirPath/$file");
        //check if its older than a week
        if ($createTime>$lastCheck)
        {
            //file is newer than a week
            $newFiles[]="$dirPath/$file";
        }

    }
}

//now $newFiles has all the files from this week, with no DB interaction.
于 2013-11-02T02:11:46.890 に答える