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

2010年11月13日土曜日

Quercas on Google App Engine

Quercus on Google App Engine利用時に、Slim3のServletで使われているように「load-on-startup」を「1」にしてやると、Spin-up時のcpu_msが3000前後でほぼ変わらないのに対し、Servletのレスポンスタイム(ms)が14000前後から3000前後と大幅に縮小されるのが確認できた。(まあ偏っただけかもしれないが・・)


「com.caucho.quercus.servlet.GoogleQuercusServlet」だけでは、効果が確認できなかった。そこで、GAEでは使わない「com.caucho.quercus.servlet.QuercusServlet」の設定を追加して、「load-on-startup」を「1」にしてやると、レスポンスタイムが短縮する変化が起きた。

WEB-INF/web.xml:

  <servlet>
    <servlet-name>quercus</servlet-name>
    <servlet-class>com.caucho.quercus.servlet.GoogleQuercusServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet>
      <servlet-name>QuercusHot</servlet-name>
    <servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>


spin-up時間

残りの、quercusを動かすための設定は、
WEB-INF/appengine-web.xml:
    <static-files>
      <exclude path="/**.php" />
    </static-files>
    <resource-files>
      <include path="/**.php" />
    </resource-files>

WEB-INF/lib:
に、resin.jarを追加。

resin.jarが、大きいいので分割するのに、appengineのdeployには「--enable_jar_splitting」が必要でした。 # appengine-java-sdk-1.3.8/bin/appcfg.sh --enable_jar_splitting update WEB-INF/..

設定については、下記のページを参照してください。
・http://blog.caucho.com/?p=187
・http://www.atmarkit.co.jp/fcoding/articles/gaephp/02/gaephp02b.html (日本語環境の設定あり)

2010年6月22日火曜日

php pecl探索

APCやmemcachedなど従来から使われている物以外のPHPに新しい使い勝手を追加するpecl拡張を紹介したいと思います。 

ssh2
指定したファイルからの暗号鍵認証も、パスワード認証も可能。
SFTP接続からアップロード・ダウンロード、切断まで。
タイムアウトがある場合は、ポーリングについては不明ですので、バッチ処理を挟む場合、ファイル操作ごとに接続するなどしましょう。
http://www.php.net/ssh2

tokyo_tyrant
Webクラスター環境で、共有セッションの管理などに使えます。
http://www.php.net/manual/ja/tokyo-tyrant.installation.php 
ttserver -port 2000 -ext /path/to/expire.lua -extpc expire 30.0 '/tmp/sessions.tct#idx=ts:dec'
TokyoTyrantサーバーをluaで拡張することができます。
セッション管理は、pecl側で制御することも出来ます。

Tokyo Cabinet と Tokyo Tyrantが入っていれば、(rpmかlocalインストールなどで、自分は、specからインストールしました)。luaも入れておきましょう。
pecl install tokyo_tyrantで、いけますよ。(現在は、1.0前なので、 pecl install tokyo_tyrant-0.5.0 とか必要)
http://www.php.net/tokyo-tyrant
http://github.com/mkoppanen/php-tokyo_tyrant/

oauth
OAuthのC実装2010年6月2日にめでたく1.0.0がリリース
http://php.net/oauth


lzf
ストリーム圧縮向けの高速な圧縮伸張をサポート。
ただし、肝心のストリーム圧縮やフィルターでの利用は出来ない模様。
http://www.php.net/lzf

libevent
待望のモジュール、PHPでスレッドベースのイベントサーバが用意できます。いままでも、プロセスベースや、HTTP処理ベースの並列化は可能でしたが、のような軽量な処理 が可能になります。
http://www.php.net/libevent


mongo
MongoDB接続用モジュール

http://www.php.net/mongo

amqp
RabbitMQな どAMQP実装へのクライアント用の接続モジュールです。
http://www.php.net/amqp

stomp
こちらも、メッセージキュー(ActiveMQなど、stompプロトコルに対応した)クライアント用の接続モジュールです。

http://www.php.net/stomp

2010年5月13日木曜日

mb_convert_kanaで、半角から全角に変換されないASCII文字

$halfwidth = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";

$fullwidth = " !”#$%&’()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|} ̄";

echo $halfwidth,"\n";
echo mb_convert_kana( $halfwidth,"ASKVC","EUC-JP"),"\n";
echo $fullwidth,"\n";
 
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

 !”#$%&’()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|} ̄

",',\,~が変換されない。

2008年8月19日火曜日

PHPコマンドラインの変数

環境変数に設定されている物は、$_ENVから$_SERVERに引き継がれるのでcrontabなどで注意

$argv,$argcもphp.iniなどの設定によっては、出力されない。

crontabなどを考えると、
$_ENV["HOSTNAME"] ($_SERVER["HOSTNAME"])は使わずに、
$hostname = php_uname('n');
$hostname = exec("/bin/hostname");
などを、使う。

CentOS4

共通
_SERVER["PHP_SELF"] =>
_SERVER["SCRIPT_NAME"] =>
_SERVER["SCRIPT_FILENAME"] =>
_SERVER["PATH_TRANSLATED"] =>
_SERVER["DOCUMENT_ROOT"] =>
_SERVER["REQUEST_TIME"] => 1219079461
_SERVER["argv"] => Array
(
)
_SERVER["argc"] => 0

crontab (/bin/sh)
_ENV["SHELL"] => /bin/sh
_ENV["USER"] => hoge
_ENV["PATH"] => /usr/bin:/bin
_ENV["PWD"] => /home/hoge
_ENV["SHLVL"] => 1
_ENV["HOME"] => /home/hoge
_ENV["LOGNAME"] => hoge
_ENV["_"] => /bin/env

_SERVER ・・・_ENVを引き継ぐ

loginシェル /bin/bash
_ENV["HOSTNAME"] => foobar
_ENV["TERM"] => xterm
_ENV["SHELL"] => /bin/bash
_ENV["HISTSIZE"] => 1000
_ENV["USER"] => hoge
_ENV["LS_COLORS"] => no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cm
d=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;
31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=0
0;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:
_ENV["KDEDIR"] => /usr
_ENV["PATH"] => /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/hoge/bin
_ENV["MAIL"] => /var/spool/mail/hoge
_ENV["PWD"] => /home/hoge
_ENV["INPUTRC"] => /etc/inputrc
_ENV["LANG"] => ja_JP.EUC-JP
_ENV["HOME"] => /home/hoge
_ENV["SHLVL"] => 2
_ENV["LOGNAME"] => hoge
_ENV["LESSOPEN"] => /usr/bin/lesspipe.sh %s
_ENV["G_BROKEN_FILENAMES"] => 1
_ENV["_"] => /usr/bin/php

_SERVER ・・・ _ENVと同じ物