PHPという概念が存在しない退屈な世界_速度改善編
-
Upload
yoshihiro-ohsuka -
Category
Engineering
-
view
2.178 -
download
0
Transcript of PHPという概念が存在しない退屈な世界_速度改善編
whoami
• 大須賀 義浩
• PHPエンジニア@株式会社 Loco Partners
• twitter @oh_sky
• facebook http://fb.com/ohsky
ここまでのあらすじ
• PHPをアップロードすればAWS LambdaでもPHPが使える • API Gateway経由でアクセスすれば、PHPのWebアプリケーションが動かせる
http://qiita.com/oh-sky/items/646d326ee23ae640153f
ここまでのあらすじ
気になったこと
やたら遅い
01.24 01.37 01.26 01.46 01.51 01.28 01.39 01.36 01.40 01.34
平均 1.36秒
以前作成した構成 Node.JS -> sh -> PHP BS
シェルスクリプトでPHP BSを起動し curlでアクセスするという回りくどいことをしているから遅いのでは?
CGI SAPIを使おう
#!/bin/sh export LD_LIBRARY_PATH=`pwd`'/lib:'$LD_LIBRARY_PATH ./php/php -S localhost:8080 -t ./cakeapp/webroot & mkdir -p /tmp/cakephp/logs mkdir -p /tmp/cakephp/tmp/cache mkdir /tmp/cakephp/tmp/cache/models mkdir /tmp/cakephp/tmp/cache/persistent mkdir /tmp/cakephp/tmp/cache/views curl http://localhost:8080/$1 kill $!
Built-in Serverの起動
CakePHPを動かすための設定
Built-in ServerにリクエストBuit-in Serverの停止 (停止しないとLambdaのTimeoutまで動き続ける)
Builtin Serverの場合
#!/bin/sh export LD_LIBRARY_PATH=`pwd`'/lib:'$LD_LIBRARY_PATH mkdir -p /tmp/cakephp/logs mkdir -p /tmp/cakephp/tmp/cache mkdir /tmp/cakephp/tmp/cache/models mkdir /tmp/cakephp/tmp/cache/persistent mkdir /tmp/cakephp/tmp/cache/views export SCRIPT_FILENAME=./cakeapp/webroot/index.php export REDIRECT_STATUS=true export REQUEST_URI='/'$1 ./php/php-cgi --no-header
ENV設定
CGI-SAPIの場合
01.22 01.19 01.23 01.29 01.14 01.33 01.21 01.19 01.24 01.23
平均 1.23秒
Node.JS -> sh -> PHP CGI
ちょっと速くなったかも でも遅い
Node.JSからシェルスクリプト経由で PHPを起動しているから遅いのではないか
exports.handler = function(event, context) { var exec = require('child_process').exec; var uri_path = "undefined" == typeof event.uri_path ? '' : event.uri_path; exec( "export LD_LIBRARY_PATH=`pwd`'/lib:'$LD_LIBRARY_PATH;" + "mkdir -p /tmp/cakephp/logs;" + "mkdir -p /tmp/cakephp/tmp/cache;" + "mkdir /tmp/cakephp/tmp/cache/models;" + "mkdir /tmp/cakephp/tmp/cache/persistent;" + "mkdir /tmp/cakephp/tmp/cache/views;" + "export REQUEST_METHOD=POST;" + "export SCRIPT_FILENAME=./cakeapp/webroot/index.php;" + "export REDIRECT_STATUS=true;" + "export REQUEST_URI='/'" + uri_path + ";" + "./php/php-cgi --no-header;", function (error, stdout, stderr) { context.succeed(stdout); }); };
Node.JSから直接起動するように修正
01.22 01.33 01.20 01.29 01.40 01.25 01.38 01.21 01.21 01.17
平均 1.27秒
Node.JS -> PHP CGI
全く変わらない
もしかして
AWS LambdaのMemoryを増やしてみた
00.39 00.23 00.23 00.36 00.23 00.22 00.22 00.28 00.21 00.30
平均 0.27秒
やったー速くなったよー
まとめ
• 安心してください、(AWS LambdaでPHP)使えますよ
• AWS Lambdaはメモリを増やせば速く動く