2013年5月30日木曜日

【CakePHP】Modelを使わずにSELECTする【SQL】

CakePHPでデータベースにアクセスするには、Modelを使うのだが、なにせいろいろとルールを覚えるのがめんどくさい

単純なものなら、SQLを書かずして簡単にデータの取得/更新ができるので、とても便利に使うことができる

しかし、複雑なリレーションになってくると、このModelを使ったやり方を覚えるのに二の足を踏んでしまうのである

そこで、Modelを使わずにSQLを使う方法を模索してみた

App::uses('ConnectionManager', 'Model');
 ・・・
 ・・・
 $db = ConnectionManager::getDataSource('default');
 $result = $db->query("select * from posts");


とりあえず、こんな感じでSelectできるわけだが、
CorePHPでDBアクセスしたほうがいいのかな・・・
Model使ったほうがいいのかな・・・
とか思ったりもする。。。

何かスマートな方法はないだろうか?

2013年5月13日月曜日

【ServersMan】VPSを借りてみた②【遅い?】

先日コマンドレスポンスが遅いとサポートにメールしたという記事を書いたが、その回答が来た

「・・・ホストサーバーを確認いたしましたが、高負荷となる問題は発生していませんでした・・・・」
「再度、時間がかかったコマンドと詳細な時間を送ってください・・・・」

いやいや、詳細な時間っていわれても・・・
常時、もたつくんですよねって感じなので、
この件は、あきらめようと思ってます

だって高負荷じゃないなら、これが普通ってことだと思うんで、
これ以上、何とかしてくれとは言えないです。
490円/月ですから。。。
金額を考えると我慢できる範疇です。

というわけで、しばらく使ってみようと思います。

2013年5月9日木曜日

【CakePHP】ドキュメントルート以外に配置して Alias する

今まで CakePHP のディレクトリ一式をドキュメントルート下に配置して以下ようにアクセスしていた
http://ipaddress/cakephp/コントローラ名/アクション

/var/www/html        (ドキュメントルート)
    └/cakephp  (CakePHPファイル一式)

しかし、ドキュメントルートの下は何かとごちゃごちゃするし、CakePHP のファイル一式を別のディレクトリに配置して、Apache の Alias を設定してドキュメントルートから切り離したくなった。

というわけで、以下のような感じにしてみようと思う。
アクセスURL: http://ipaddress/cake/コントローラ名/アクション

/var/www      
  └/html    (ドキュメントルート)
  └/cakephp  (CakePHPファイル一式)

まずは、ドキュメントルートと同階層の /var/www 下に cakephp ディレクトリを丸ごとコピー

そして、Apache の設定
/etc/httpd/conf.d に cakephp.conf を作成する

Alias /cake /var/www/cakephp
<Directory "/var/www/cakephp">
#       Options Indexes FollowSymLinks
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
</Directory>


これでOKと思い、早速、WelComeページ(http://ipaddress/cake/)にアクセスしてみる
なんかおかしい・・・
The requested URL /var/www/cakephp/app/webroot/ was not found on this server.
あれれ・・・

mod_rewrite あたりが怪しい気がする

いろいろ調べたら、CookBookにも書いていたが、
 RewriteBaseステートメントをCakePHPが使う.htaccessファイル(/.htaccess、/app/.htaccess、/app/webroot/.htaccess)に追加する必要があります。
ということらしい。
ドキュメントルート下に配置した場合はそのまま変更しないでよかったが、言われたとおりにやってみる
(詳しいことは調べてない)

cakephp/.htaccess
<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteBase    /cake                ←この行追加
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>


cakephp/app/.htaccess
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase    /cake/app      ←この行追加
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>




cakephp/app/webroot/.htaccess
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /cake/app/webroot    ←この行追加
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>




以上、3つの .htaccess に RewriteBase を追加することにより、アクセスできるようになりました。





【ServersMan】VPSを借りてみた【遅い?】

いままで VMware のローカル環境でいろいろやってきたが、外の世界とつながればもっと違ったことができそうだし、新しい発見があるかもしれないという欲求が沸いてきた

安いVPSは遅い遅いと言われているが、どれだけ遅いかもわからないし、たいしたことができるわけでもないので、とりあえず ServersMan@VPS の Entryプランを借りてみることにした。
490円/月(初期費用0円)でメモリ1G、ディスク容量50G というプランだ。


そして申し込み。
Entryプランでは、初期インストールアプリケーションとして、シンプルセット、ホームページセット、ブログセットが選べる。(CentOS6 64bit選択時のみ?)
自分は、ブログセットを選択。
ブログセットはWordPressがインストールされる。
WordPressは使ったことがないので、勉強になると思ってこれを選択した。

ブラウザで必要事項を記入して、あっという間に申し込み完了。
オンラインで申し込み、そしてすぐに使える。安い。自分専用。なんてすばらしいんだ・・・
と思いつつ。

申し込み内容、接続情報等は、申し込み完了時の画面にも表示されるが、メールでも同様の内容が送られてくるので、その内容にしたがって、早速SSHで接続してみる。

(・・・・・ なんかもたつくなぁ・・・・・・・・)
# ls エンター(数秒待ち)
# ls エンター(あれ、大丈夫だ・・・)
# cd /xxx/xxx エンター(数秒待ち、ときどき遅い・・・?)
(安いからこんなもんか・・・)

まずは、鍵認証の設定をしよう。
設定内容は、前に書いた記事のとおりにすればよい。

なんなく、鍵認証の設定完了。
が、しかし、、、
遅いんですよ、レスポンスが。ずっとじゃないですが、かなりの頻度で遅延するんですよ。

エコーバックも遅延するから、入力間違えるんですよ。
作業効率わるいんですよ。
これじゃあちょっと使いづらいな・・・

終了・・・・・

一旦作業終了して、サポートに問い合わせてみることに。

「コマンドレスポンスが遅いんですよね~かなりの頻度で・・・
共用サーバーなので、他のユーザの影響受けるのは承知してますが・・・・
これが普通なんですかね~」
的な内容で。

そしたら、
「いただいた情報では詳細な確認ができないので、もうすこし教えて」
と回答がきたので、
(それはそうだと思いつつ)
もう少し詳しく状況を書いて返信しました。
回答待ちです。追記(回答来ました
(この間に、さくらの2週間無料お試しでも使ってみようかな・・・)

とにかく、「この安いプランは、こんなもんですよ~」とか「これが普通です」とか言ってくれたら、あきらめるんですがね。
だって安いから多くは望みませんし・・・



安いVPSってこんなものですかねぇ。。。


あ、そうだ。
ドメインは、お名前.com とかで取得したほうが安そうなので、後日取ろうと思っています。