2009年6月26日金曜日

emacs

学生時代はemacsを愛用していましたが、会社ではまっさらなOSをインストールすることが多いので、viばかり使ってます・・。
久々にemacsとか使ったりすると間違ってZZとかで終了しようとしたりしてパニクったりします。。

:w → :q!
で終了させる人をたまにみますがZZで終わらせられるのは意外に知らない人多いんですかね。
そんなどうでもいいネタでした。

2009年6月6日土曜日

max_execution_time

PHPのタイムアウトを決める際にphp.iniにmax_execution_timeがある。これがデフォルト値になって、PHPのタイムアウト判定を行う。ちなみにデフォルト設定は30秒になっている。0にすると無限。

PHPスクリプト内でset_time_limit()を使うことでデフォルト値を変えることも可能。

これら2つは、スクリプトの実行時間のみに反映されるものでシステムコール等の時間は含まれない。
30秒以上かかってたのに落ちない処理があったのになんで今回は落ちるんだ!というのは途中でシステムコールしたり、DBの読み書きがあったりでカウントされていない時間があるのかもしれないことに注意する必要がある。
簡単に言ってしまうと人間には計りにくい時間ってことか・・。

原因不明のエラーでループ文で止まる場合等は疑ってみるといいかも。

2009年6月2日火曜日

apacheで起こった出来事

apacheの設定ファイルにhttpd.confというのがあるのはインストールしたことがある人なら分かるかと思います。apacheのデーモン自体はrootで実行するのが普通だと思いますが、apache内での実行するユーザーとグループをhttpd.confの

User hoge
Group hoge

とかで指定することができます。
例えば、sudo権を持ってるhogeユーザーが

# sudo su -
# apachectl start

とやるとrootの環境変数を読み込んでapacheを起動して中での実行はhogeが行うことになります。
例えば、PHPとかでディレクトリを作ったりするとhogeユーザーが作ったのと同じようなことになるということです。


hogeユーザーが

# sudo /・・・/apachectl start

とやったら、hogeユーザーの環境変数でrootがapacheを実行して、中ではhogeユーザーが頑張ると言った構図で実質、hogeユーザーの天下となるはずで今までもちゃんとなってたのですが、
なぜか、PATHの環境変数は読み込むのにLD_LIBRARY_PATHの環境変数を読み込んでくれないという事象に陥りました。原因不明。

色々試しても解決せず仕方がなかったので、apachectl自体に

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/hogehoge/lib

のような形で記述してapacheを再起動して読み込ませました。今まで問題なかったのになんででしょう。。
一応補足しておくとapacheが万一乗っ取られたときにために何もできないようNologinのユーザーで実行すべきかと思います。