NginxとPHP-FPM間をunix socket通信にする

調べたのでメモ。

環境

  • CentOS 6.3
  • php 5.4.5
  • nginx 1.2.0

php-fpm.confのlistenを以下のようにします。

listen = /var/run/php-fpm/php-fpm.sock;

nginx.confの該当serverのfastcgi_passを以下のようにします。

server {
    ...
    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    ...
}

※ /var/run/php-fpm/ディレクトリが無いときは作っときます。

php-fpmとnginxを再起動したら完了です。

FuelPHP1.3注意メモ

2012/09/29現在。起きたことをちょっと調べてメモっただけ。
詳細までは追えてない。ちなみに見つけたのは会社の先輩方。

一個目 PKメモ

1.3でORMを使ってPK指定でデータを新規追加した際にエラーが出る。
原因はコードが削除されたから。

1.3
https://github.com/fuel/orm/commit/42a37ce5d639bc6485b907764280dca3285a2bf9

1.4ではその部分が復活している。1.3でも次のバージョンアップで該当コードが復活するのかな?

1.4
https://github.com/fuel/orm/commit/cf4c397ec71ba6e5fcd05b8b91328dd46eed734d#classes/model.php

二個目 Action名

1.3からコントローラーのアクション名に「get_xxx」って名前を使ってるとRest Controllerを使わなくてもgetメソッドでアクセスすると呼ばれちゃうよ。アクセス修飾子がpublic以外だと404だよ。

下記のコードの場合、1.2だとaction_indexが呼ばれるが、1.3の場合、HTTPメソッドをprefixに持つアクションがある場合、そっちが呼ばれる。

<?php                                                                                                                                                                    
class Controller_Welcome extends Controller
{
    public function get_index()
    {   
        return "aaa";
    }   
    public function post_index()
    {   
        return "bbb";
    }   
    public function put_index()
    {   
        return "ccc";
    }   
    public function delete_index()
    {   
        return "ddd";
    }   
    public function options_index()
    {   
        return "eee";
    }   
    public function patch_index()
    {   
        return "fff";
    }   
    public function action_index()
    {   
        return "ggg";
    }   
}

1.3になってaction_じゃなくてまず接続してきたメソッド名をprefixとしてリフレクションを使ってメソッド存在確認をしてるからっぽい?
change logにそこら辺の仕様変更が書いてあったらすいません。

Sessionの保存先をMemcacheにした時に、ローカルホストの設定が消せないのは治ったのかなー。
http://php6.tumblr.com/post/29172592390

ちょっと落ち着いたら、コミュニティに聞いてみるかな。

FuelPHP1.3でRedisは注意

FuelPHP1.3でCacheのストレージをredisにするとあまりいいことが無いよってメモ。

詳しく調べてないけど、
fuel_xxxxxxx:index:とかいうkeyにkeyたちがserializeされた状態で保存されてて、
何か操作を行うたびにindexにkeyがあるかチェックするからkeyが増えるに従いトラフィックが増加する。

2012/11/05追記
1.3で1.2のredis使えば良いよ

1.2と1.3の差分
https://github.com/fuel/core/commit/11b6a890cbfcd7b4a5e98529b9d778dc2eacbdb3

もうちょい調査してみよう。

2012/11/12追記

どうやら1.2にはバグがあり正しくヒットしないことがあったが
1.3からは正しく動作するようになったからヒットするようになったらしい。

それにしてもCacheの仕組みがあまり良くないなぁ。
KVSにしてはいけない実装をしている気がする。

2012/11/17追記

なんかごちゃごちゃしてきたので整理しとこう。

Cacheクラスはストレージにfile,apc,memcached,redisが使える。

FuelPHP1.2のCacheクラスにはバグがあって正しくヒットしない。
FuelPHP1.3ではそのバグが修正されていて正しくヒットするようになった。
しかし、Cacheクラスのredisの実装が残念なためヒットはするが、トラフィックが増える。

有効期限を持たない永続的なデータを保存したい時は、
Redisクラスで直接保存したほうが良い。

そのほうがシンプルだし、Cacheクラスを使うとデータがFuelPHPに依存してしまうから、
よろしくないとおもいます。

Cacheクラス→ http://fuelphp.com/docs/classes/cache/usage.html
Redisクラス→http://fuelphp.com/docs/classes/redis.html