0

大規模な初心者なので、どんな助けでも大歓迎です。

約 30,000 のエントリを持つ mysql データベースがあり、それぞれに .jpg 形式のサムネイルへのリンクがあります。

とにかくmysqlデータベースを調べて、各リンクがまだ有効であることを確認する必要があるかどうかを調べようとしていました.jpgファイルが本来あるべき場所にあるかどうか。

したがって、各エントリには ID、名前、サム (URL) があります。

ありがとう!

4

3 に答える 3

0

SQLフィドル

SELECT * from table_name where SUBSTRING(url, -3, 3) = 'jpg';
于 2013-01-13T21:09:17.287 に答える
0

あなたの質問のこの行を考慮してください:「それぞれ.jpg形式のサムネイルへのリンクがあります。」

regexpで終わる :を試すこともできます.jpg

SELECT DISTINCT url_column as regex_u, id 
    FROM your_table
    where url_column regexp '\(.jpg)$';

でもlikecontainsjpg

    SELECT DISTINCT url_column as like_u, id 
    FROM your_table
    where url_column like '%.jpg%';

別のインストゥルメント:

    SELECT DISTINCT url_column as instr_u , id
    FROM your_table
    where instr(url_column, '.jpg') > 0;

全体を合わせたい場合ulr

    SELECT DISTINCT url_column as url_u, id 
    FROM your_table
    where url_column regexp '^(https?://|www\\.)[\.A-Za-z0-9/_\-]+\\.(jpg)$'
    ;

別の使用Right

    SELECT DISTINCT url_column as right_u, id 
    FROM your_table
    where Right(url_column,4) = '.jpg';

explain plan最も効率的なソリューションについては、 を確認してください。LIKEが一番長くかかるようです。

于 2013-01-13T21:07:13.857 に答える
0

リンクについては、次のようなクエリを実行してすべてのリンクを取得します。

SELECT DISTINCT url FROM your_stuff;

データベースの正確な性質については言及していませんが、そのようなものは機能するはずです。

次に、それをループし、それぞれに対して cURL のようなものを使用して HEAD リクエストを実行します。これは、サーバーが実際のファイルを返してはならないことを除いて同一であるため、通常の GET リクエストよりも優れているため、ダウンロードする必要はありません。それらがそこにあるかどうかを確認するためだけにすべての画像。HEAD リクエストを実行して、サーバーがステータス 200 で応答したことを確認します。

この質問は、 cURL の HEAD リクエストについてもう少し詳しく説明しています。

于 2013-01-13T21:00:27.843 に答える