テスト系その2

閲覧数: 84(0)

このサイトは個人用ブログだけど、ローカルにテスト系を持っている。個人ブログ運営者なら、記事のバックアップを持っていれば良い方だけど、ここではローカルではあるけど、完全に別のシステムで同じソフトウェアを稼動させて、テストや開発を本番系に影響を与えずに行うとてもオタクな環境が用意されている。一応データのバックアップも兼ねて、本番系からテスト系へのデータコピースクリプトも書いた。ブログの記事自体は、データベースに文字として保存されているので、データベースを本番系からテスト系へコピーすることで、記事のコピーは完了する。記事中に挿入されている画像などのメディアファイルは、ファイル名と保存先がデータベースに記述されているけど、実体はデータベースの外にあり、データベースをコピーしただけでは本番系からテスト系へはコピーされない。

「画像ファイル名を読み込んでローカルに存在するかチェックする」

#!/bin/sh
SQL_TABLE="テーブル名"
WORDPRESS_DIR="ローカルのインストールパス"
IMAGE_DIR="$WORDPRESS_DIR/wp-content/uploads"
REMOTE_PATH="サーバー/wp-content/uploads"
SQL_CMD_FS="SELECT meta_value AS '' FROM wp_postmeta WHERE meta_key='_wp_attached_file';"
images=$(echo $SQL_CMD_FS | mysql --defaults-extra-file=.my.cnf $SQL_TABLE)
for image in $images
do
year=$(echo $image | cut -c1-4)
month=$(echo $image | cut -c6-7)
target="$IMAGE_DIR"/"$image"
if [ -f $target ]; then echo file exists skip $target

画像ファイルのフォルダ毎圧縮して、ダウンロードして解凍する方法でも画像ファイルのコピーは出来なくはないが、あまり美しい解決策とは言えない。だいたい、毎回全体をコピーすると、時間もかかり効率的ではない。理想的には、記事をデータベースコピーでテスト系へ移したあと、データベースを読み込んで、画像一覧を抽出し、テスト系の画像フォルダとマッチングして、存在しない画像だけをサーバーからダウンロードする方法。

「画像ファイルが存在しなかったら、本体と縮小サイズをダウンロードする」

else
url="$REMOTE_PATH"/"$image"
echo downloading $url
wget -a ./getImages.log --restrict-file-names=nocontrol -P "$IMAGE_DIR"/"$year"/"$month" $url
SQL_CMD_SZ="SELECT meta_value AS '' FROM wp_postmeta WHERE post_id IN (SELECT post_id AS '' FROM wp_postmeta WHERE meta_value='$image');"
SZ=$(echo $SQL_CMD_SZ | mysql --defaults-extra-file=.my.cnf $SQL_TABLE)
sizes=$(echo $SZ | grep -o '[0-9]*x[0-9]*')
urlhead=$(echo $url | head -c-5)
urltail=$(echo $url | tail -c-5)
if [ "$urltail" = "jpeg" ]; then
urlhead=$(echo $url | head -c-6)
for size in ${sizes[@]}
do
url="$urlhead""-${size}"".jpeg"
echo $url
wget -a ./getImages.log --restrict-file-names=nocontrol -P "$IMAGE_DIR"/"$year"/"$month" $url
done

いくつかハードルがあって、一つの画像ファイルでも、実際には縮小サイズやアイキャッチ画像サイズなど、画像毎に複数の異なるサイズを持っていること、画像ファイルの拡張子が単一でない(JPEG, JPG, PNGなど)ことなど、解決すべき課題は多い。

「JPEG以外の3文字拡張子にも対応する」

else
for size in ${sizes[@]}
do
url="$urlhead""-${size}""$urltail"
echo $url
wget -a ./getImages.log --restrict-file-names=nocontrol -P "$IMAGE_DIR"/"$year"/"$month" $url
done
fi
fi
done

ある画像が、複数の画像サイズのファイルを持っていることは、データベースに書いてあるので、それを読み込んで、サイズ情報に整形(640×250とか)し、ダウンロードすべきファイル名を完成させることが出来た。予め読み込んでおくと無駄になるので、ダウンロードすべき画像だと判断したあとに、データベースを読みに行くことで、パフォーマンス劣化を防いでいる。拡張子は、JPEGとそれ以外の3文字拡張子に対応するようにした。

折角、画像ファイルに手を入れるのだから、現在のテーマに合ったアイキャッチ画像サイズも追加で生成することにした。既存の古い投稿は、違うテーマの時に書かれていて、現在のテーマが使用するアイキャッチ画像サイズを生成していなかった。これもうまく解決したはず。

スキル維持用としては、とても上手く機能している本番系とテスト系だな。

Syntaxhighlighterの行番号とコード本文がずれていたので、syntaxhighlighter3フォルダの/styles/shCore.cssで調整する。vertical-alignをbaselineからmiddleへ変更。これも有名なプラグインで多くのサイトで使われている。テーマとの相性があるみたいで、Fashionistaではずれます。ずれたままのサイトも結構あって、気にならないのかな?と他人事ながら心配したりw

.syntaxhighlighter textarea {
vertical-align: middle !important;
}
【最終更新日: 2017年10月22日】
カテゴリーIT閑話, 公開タグ, , ,
ページナビのテキスト
2021年4月1日

記事ページの下部に前後の記事(投稿)へのリンクが表示される仕様なのだが、「カテゴリーに制限」をかけて  続きを読む

閲覧数まとめ
blank
2021年3月25日

閃きついでに総合計と週合計をフラグで制御する方式に変更してみた。これまではベタに関数をまるまるコピー  続きを読む

閃きは大事だw
blank
2021年3月23日

このサイトは、あくまでもCMSであるWordPressの構築やクラウドであるAWSの運用ノウハウ取得  続きを読む

ElasticPress 3.5.6
blank
2021年3月19日

マイナーバージョンアップにも関わらず、検索スコアリングのパラメータが微調整された結果、期待する検索結  続きを読む

管理画面を制限する
blank
2021年2月22日

このサイトではネット上のさまざまな攻撃からの防御のため、Wordfenceプラグインの無料版を使用し  続きを読む

検索精度を高める
blank
2020年11月1日

検索ネタを連発するのはElasticsearchやElasticPressがバージョンアップした時の  続きを読む

スポンサーリンク

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください