ラベル PHP の投稿を表示しています。 すべての投稿を表示
ラベル PHP の投稿を表示しています。 すべての投稿を表示

2013年11月17日日曜日

mecabインストールについて

mecabインストール毎度忘れてしまうのでメモ。

2013年2月16日土曜日

apache+phpからnginx+php-fpmへ移行してみた

なんとなくapache2+phpからnginx+php-fpmへ移行してみた。別にapacheが遅いと感じている分けではないが、nginxも触っとくかなと。

2013年2月3日日曜日

OpenSlopeOneを使ってみた

レコメンドしたかったのでOpenSlopeOneを使ってみた。Cicindelaの方が色々できそうだけど、OpenSlopeOneのが手軽そうな印象だったので今回はこれを採用。

2012年11月25日日曜日

[FuelPHP] DB接続でちょっとハマる

Database イントロダクションにあるようにAPPPATH/config/db.phpに設定を書いて、Usageのようにqueryをexecuteしたのだけれど、
Fuel\Core\Database_Exception [ 1045 ]: Access denied for user 'root'@'localhost' (using password: YES)
と言われて繋がりません。ユーザ名はrootなんかにしてないのに。。『さくらVPSでFuelPHPからmySQLへDB接続』の記事でも同様の現象か。さすがにpassをrootにしたくはない。
環境によって接続設定は変えないので、configの下にある下記dirを消してみたところ、APPPATH/config/db.phpの設定で無事に接続。
development  production  staging  test

あと、executeした結果をそのままviewに渡したら、
Fuel\Core\FuelException [ Error ]: Database results are read-only
と怒られました。これはas_arrayで解消。初めてのフレームワークを障ると毎回色々と躓く。

2012年7月21日土曜日

2012年7月8日日曜日

[CodeIgniter] Cron処理 メモ

CodeIgniterでCronに仕込むバッチ処理を書こうと思って調べてみる。
何もしなくても下記のように普通にコマンドラインから実行できる。
$ cd /path/to/project;
$ php index.php controller method

これだけだとURLにアクセスされるとバッチ処理を実行できてしまうので、コンストラクタでコマンドラインからの実行でない場合は404にしておく。
class Cron extends CI_Controller {

    function __construct()
    {   
        parent::__construct();
        if (!$this->input->is_cli_request()) show_404(); 
    }

}
cron設定できる処理の数が決まっているレンタルサーバとかなら、判定条件を工夫して別のサーバからURL叩いて定期処理をさせるとかもできるか。

[参考]
CodeIgniter ユーザガイド CLIからの実行

2012年6月17日日曜日

[CodeIgniter]エラーページのカスタマイズのメモ

CodeIgniterでエラーページはシンプルでheadingとmessageしか表示されないのでカスタマイズする。
まず、application/errors/error_*.phpをいじればデザインは変えられる。
変数とかを渡したい場合は、application/core/MY_Exceptions.phpを用意する。

2012年4月14日土曜日

NULL + 1 > 0 はTRUEかFALSEか

PHPだとTRUE。SQLではUNKNOWNのためTRUEではないのでFALSE。
$ php -r 'echo (null + 1) > 0 ? "TRUE" : "FALSE";'
TRUE

mysql> SELECT IF(NULL + 1 > 0, "TRUE", "FALSE");
+-----------------------------------+
| IF(NULL + 1 > 0, "TRUE", "FALSE") |
+-----------------------------------+
| FALSE                             |
+-----------------------------------+
1 row in set (0.00 sec)
3値論理であることを意識していないSQLを業務でも結構見る。NULLの取扱い方は難しい。
だから僕は、Nullがきらい。
基本的には、NOT NULLにしてnullは排除するように気をつけている。
(例外的に、必須でないけどUNIQUEなカラムは仕方ないのでNULL許すこともあるが)
でも、NOT NULLでNULLを排除していてもNULLは出てくるので困る。そう、外部結合。
NULLを完全に排除なんてできないので、nullについてちゃんと意識してSQLを書こうという今回の教訓。

とりあえず以上。


一応、表題の件を考慮しない失敗例は示しておく。

2011年8月4日木曜日

2011年8月3日水曜日

CakePHP 画像アップロード

画像のアップロード調べていて、下記ImageBehaviorを知ったので使ってみる。
[CakePHP] 画像のアップロード&リサイズを簡単にできる ImageBehavior | Sun Limited Mt.

使い方は参照元にあるので省略するが、簡単に使えて良い感じ。
ただ、findしたときに関連テーブルのimageまでは処理してくれない。
で、また調べてたら、下記記事でbelongsToに対して処理を足してたので参考にみる。
ちなみに、今回処理させたい関連はhasMany。
cakePHPのimageBehaviorについて – CEED

afterFindに処理を加えてるよう。

今回はhasManyを処理したいので、relatedModelsにhasManyもマージする。
$relatedModels = array_merge($model->belongsTo, $model->hasMany);

これだけだと動かなかった。。。
hasManyなわけで複数のときもあるので、127-130行までの処理を複数の場合を考慮する。
                        if (isset($results[$i][$relatedModelName][0])) {
                            $j=0;
                            while ( isset( $results[$i][$relatedModelName][$j] ) && is_array( $results[$i][$relatedModelName][$j] ) )  {
                                if (isset($results[$i][$relatedModelName][$j][$field]) && ($results[$i][$relatedModelName][$j][$field]!='')) {
                                    $value=$results[$i][$relatedModelName][$j][$field];
                                    $results[$i][$relatedModelName][$j][$field]=$this->__getParams($relatedModel, $field, $value,$fieldParams, $results[$i][$relatedModelName][$j]);
                                }
                                $j++;
                            }
                        } else {
                            if (isset($results[$i][$relatedModelName][$field]) && ($results[$i][$relatedModelName][$field]!='')) {
                                $value=$results[$i][$relatedModelName][$field];
                                $results[$i][$relatedModelName][$field]=$this->__getParams($relatedModel, $field, $value,$fieldParams, $results[$i][$relatedModelName]);
                            }
                        }
145-148行のところも同様に。
                        if (isset($results[$relatedModelName][0])) {
                            $j=0;
                            while ( isset( $results[$relatedModelName][$j] ) && is_array( $results[$relatedModelName][$j] ) )  {
                                if (isset($results[$relatedModelName][$j][$field]) && ($results[$relatedModelName][$j][$field]!='')) {
                                    $value=$results[$relatedModelName][$j][$field];
                                    $results[$relatedModelName][$j][$field]=$this->__getParams($relatedModel, $field, $value,$fieldParams, $results[$relatedModelName][$j]);
                                }
                                $j++;
                            }
                        } else {
                            if (isset($results[$relatedModelName][$field]) && ($results[$relatedModelName][$field]!='')) {
                                $value=$results[$relatedModelName][$field];
                                $results[$relatedModelName][$field]=$this->__getParams($relatedModel, $field, $value,$fieldParams, $results[$relatedModelName]);
                            }
                        }

これでhasManyの関連のテーブルのimageが処理されるようになりましたっと。

2011年7月30日土曜日

PHP print_rに第二引数あったのね

超今更ながら、print_rに第2引数を渡せるのを知った。
TRUEを渡すと出力はしないで、string返してくれる。

そんだけです。

2011年5月6日金曜日

PHP Text_Wiki_Mediawikiを使ってみた

PHPでMediawiki記法をHTMLに変換するのにText_Wiki_Mediawikiを使ってみた。
ちょっと使い方がわからなくWikilinkの変換で手間取ったのでメモを残しておく。

2011年3月13日日曜日

PHPでブログ更新ping(weblogUpdates.ping)を送信する

PHPでメール送信してblogger自動投稿してみるの続き。

bloggerではping送信先を追加する機能はないので、どうせPHPでブログ自動投稿するならばping送信までやった方がいいでしょ、とのこと。アクセスアップ的にもping送信した方が良いと言われてるけど、どれほど効果があるものかわからないが、やらないよりはやっとけか。

2011年3月3日木曜日

PHPでメール送信してblogger自動投稿してみる

blogをメールで自動投稿してみたかったので、PHPでメール送信する関数を調べてみた。メール送るのはServersman@VPSのCentOSから。PHPを調べる前にまずはsendmailをgmailに転送する設定を行う。『SendmailでGmailに転送』を参考にした。参考というかほとんどそのまま。

2011年2月24日木曜日

PHP ZendでMemcached使ってみる

重い処理にはキャッシュ。ということで、MemcachedをZend framworkで使用してみた。まずは、Zend frameworkのパッケージphp-ZendFrameworkでは、入らなかったのでインストールから。
# yum install --enablerepo=remi php-ZendFramework-Cache-Backend-Memcached
# /etc/init.d/httpd restart
apacheのリスタートをしないと、下記のようなエラーが出てハマる。

2011年2月21日月曜日

PHP Zend_Config_XMLをsimplexml_load_stringに書き換える

XMLのParseにZend_Config_XMLを使ってみたがParse用ではなくConfigファイルを読むためのものっぽいので、simplexml_load_stringに書き換えることにした。

2011年2月20日日曜日

PHP Zend_Config_XML使ってみる。

Zend Frameworkを使用してWebアプリケーションを作ることになった。XMLを処理するので、Zend_Config_XMLを使ってXMLをParseしてみたが、少し使いにくい。

2011年2月15日火曜日

CakePHP ケーキを焼いてみる

CakePHPではcakeをbakeを利用することで、コードを生成してくるらしい。まずはちゃんと調べる前に使ってみる。習うより慣れよ!ちょっと使い方違うかな^^;

とりあえず、consoleディレクトリに実行ファイルあるのでさっそく実行してみる。

2011年2月14日月曜日

CentOSでCakePHPを動かす

色々と訳合って、CakePHPをやることになりそう。LAMP環境は整っているので、あとはCakePHPを用意しておく。
http://cakephp.jp/
CakePHPのサイトから落として解凍して、DocumentRoot直下にcakephpというディレクトリ名で移動して準備完了。