やったこと

webサービスを作るときに考えたことを垂れ流します

【CakePHP3】EC2サーバーからRDSに接続するときのhost設定は?

アマゾンAWSのEC2サーバにCakePHP3を設置して、RDSサーバー(DBサーバー)に接続しようと思ったんですけど、CakePHPの「app.php」の設定にちょっと迷ってしまいました・・。

「Datasources」の「host」項目ってどうやって入力すればいいんでしょうかね・・?

「Datasources」の「host」項目には、以下のようにRDSサーバーの「DNS名」を入れると、名前解決をしてに接続に行ってくれるみたいです。

'Datasources' => [
    'default' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => 'hogege-db.qwertyuiop.ap-northeast-1.rds.amazonaws.com',

とっても新設設計ですね・・。

以上!

ムームードメインで「管理者情報の町村/番地が不正です」って怒られる

ムームードメインの設定で「WHOIS情報の変更」をしようとすると

「管理者情報の町村/番地が不正です」

とエラーが出て怒られてしまいました・・。

この原因はおそらく「個人設定 - ユーザー登録情報」の設定が間違ってるせいです。

この項目の「お客様情報」の入力判定はクッソ厳しいので、死ぬほど気を付けて文字を入力してください。
(私の場合は住所1と住所2の入力の仕方が悪くてエラーになっていたみたいです)

詳しくは公式ヘルプをご覧ください
https://muumuu-domain.com/?mode=faq&state=answer&id=000718

以上!

【CakePHP3】サイトにrobots.txtを設置する!

CakePHP3のサイトに「robots.txt」を設置する方法です。

やり方はめっちゃ簡単。「/webroot」のディレクトリ直下に「robots.txt」を作成して置いておくだけです。

これでブラウザからあなたのサイト「http://hogegege/robots.txt」にアクセスすると、robots.txtが表示されるはずです。

以上!

【CakePHP3】ページタイトルの設定方法!

CakePHP3でページタイトルを設定する方法です!

以下のようにするとページタイトルを出力できます。

  //ビューやコントローラー内で指定
  $this->set('title', 'Test Page Title!');
  //レイアウトファイルなどでタイトル出力
  <title><?= $title ?></title>

ちょう簡単ですね・・。

以上!

【CakePHP3】ページネーション処理にキャッシュを効かせる!

CakePHP3の「ページネーション処理(Paginate機能)」の結果をキャッシュとして保存する方法です。

以下のように「検索クエリ」作成時に検索結果をキャッシュ保存する旨を書き込んでおきます。

//クエリを作成
$query = $this->Tweets->find()
              ->where(['post_id' => $post_id])
              ->order(['post_index' => 'asc'])
              ->cache("testestes", "long"); //キャッシュ保存する!

//ページネーション情報を作成
$tweets = $this->paginate($query);


これで「testestes」というキー名で、検索結果がキャッシュされます。

動作としては、もし「testestes」というキャッシュがすでに存在すればそのキャッシュの内容をロードして、「testestes」が存在しなければ新たにそのキャッシュを作成します。

このキャッシュ処理の注意点は、ここでキャッシュとして保存される内容は、もし「$paginate = ['limit' => 10]」みたいに設定していたとしたら、そのページで表示される10件分の結果しか保存されないということです。なので「1ページ目」だけではなく、ちゃんと「2ページ目」「3ページ目」の内容も別キャッシュとして保存しないといけないということです(まあ当たり前のことですね・・)。

ちなみに「long」と書いてあるのは、私が作ったオリジナルキャッシュの設定名のことです。これを省略すると通常の「default」の設定でキャッシュが保存されます。

自分専用のキャッシュ設定をする方法は、以前私が書いた「【CakPHP3】クリアしてもキャッシュが消えない! - やったこと」の記事をご参照ください。

以上です!

Facebookページで個人名を表示させない(非公開)にする!

Facebookには「個人ページ」と「Facebookページ」という二種類のページがあります。


・「個人ページ」とは、あなた個人がお友達などと交流するためのページです。
・「Facebookページ」とは、企業などが宣伝・告知用とかに作るページです。


Facebookページ」にあなたの個人名が載ってしまうとまずいですよね?(だっていかがわしいサイトを運営してることがバレてしまいますもんね・・)

ということで以下、「Facebookページ」に、管理人であるあなたの名前を載せない(非公開にする)ための方法です。

***

基本的に「Facebookページ」は、初期設定で管理人の名前が載らないようになっています。
なので特に設定をいじらなければ名前がバレることはありません。安心してください。

管理人の名前が間違って「公開設定」になってしまっていないかどうかは、以下の設定欄で確認できます。

f:id:absg:20161011170902p:plain


1.ページ右上あたりの「設定」と書いてあるバーをクリックします。
2.左のメニューの★印の「注目」と書いてある箇所をクリックします。
3.ここの「ページオーナー」の項目に、名前が記載されていなければ、あなたのプロフィールは公開されない設定になっています。

これであなたの人生は安泰です、安心してください。

【CakePHP3】エレメントのキャッシュが削除できない!

CakePHP3(ver3.1)で、エレメントの表示内容をキャッシュ(ファイルキャッシュ形式です)したのですが、うまく削除できません・・。

例えば以下のように、エレメントの呼び出し時にキャッシュ保存をするとします(キーは「test_post270」)

<?php echo $this->element('comment', ['id'=>$id, 'text'=>$text],
           ['cache' => ['config' => 'long', 'key' => 'test_post270']]
);?>

そして以下のようにキャッシュを削除しようとしてもファイルが削除されません。

Cache::delete("test_post270", "long");

なぜかというと、エレメントで保存したキャッシュは、キー名の頭に勝手に「element_」という文字列がくっつくからです。

なので以下のように「element_」を頭につけてキーを指定しないと、キャッシュは消えないというわけです。

Cache::delete("element_test_post270", "long");

この動作ってなんかおかしくないですかね・・?

実はエレメントキャッシュを削除するための特別な命令があって、私が知らないだけなんでしょうか・・?

なんかすごい不便です・・。