Browse Source

Merge branch 'master' of https://github.com/TechEmpower/FrameworkBenchmarks

Conflicts:
	frameworks/JavaScript/express/setup.sh
	frameworks/PHP/cakephp/setup.sh
	toolset/setup/linux/languages/nodejs.sh
Lita Gratrix 10 years ago
parent
commit
b0e9c36a56
100 changed files with 748 additions and 85 deletions
  1. 49 0
      .mailmap
  2. 8 24
      .travis.yml
  3. 3 1
      README.md
  4. 5 3
      config/php-fpm.conf
  5. 0 0
      frameworks/C++/cpoll_cppsp/__init__.py
  6. 2 0
      frameworks/C++/cpoll_cppsp/setup.sh
  7. 0 0
      frameworks/C++/treefrog/__init__.py
  8. 0 0
      frameworks/C++/wt/__init__.py
  9. 1 0
      frameworks/C++/wt/setup.sh
  10. 0 0
      frameworks/C/duda/__init__.py
  11. 0 0
      frameworks/C/lwan/__init__.py
  12. 0 4
      frameworks/C/lwan/bash_profile.sh
  13. 9 10
      frameworks/C/lwan/install.sh
  14. 8 1
      frameworks/C/lwan/setup-mysql.sh
  15. 8 1
      frameworks/C/lwan/setup.sh
  16. 0 0
      frameworks/C/onion/__init__.py
  17. 0 0
      frameworks/CSharp/HttpListener/__init__.py
  18. 0 0
      frameworks/CSharp/aspnet-stripped/__init__.py
  19. 0 0
      frameworks/CSharp/aspnet/__init__.py
  20. 0 0
      frameworks/CSharp/evhttp-sharp/__init__.py
  21. 0 0
      frameworks/CSharp/nancy/__init__.py
  22. 0 0
      frameworks/CSharp/servicestack/__init__.py
  23. 0 0
      frameworks/Clojure/compojure/__init__.py
  24. 0 0
      frameworks/Clojure/http-kit/__init__.py
  25. 0 0
      frameworks/Clojure/luminus/__init__.py
  26. 0 0
      frameworks/Dart/dart-redstone/__init__.py
  27. 0 0
      frameworks/Dart/dart-start/__init__.py
  28. 0 0
      frameworks/Dart/dart-stream/__init__.py
  29. 0 0
      frameworks/Dart/dart/__init__.py
  30. 0 0
      frameworks/Elixir/WeberFramework/__init__.py
  31. 0 0
      frameworks/Go/beego/__init__.py
  32. 0 0
      frameworks/Go/falcore/__init__.py
  33. 0 0
      frameworks/Go/gin/__init__.py
  34. 0 0
      frameworks/Go/go/__init__.py
  35. 0 0
      frameworks/Go/gorail/__init__.py
  36. 0 0
      frameworks/Go/revel-jet/__init__.py
  37. 0 0
      frameworks/Go/revel-qbs/__init__.py
  38. 0 0
      frameworks/Go/revel/__init__.py
  39. 0 0
      frameworks/Go/webgo/__init__.py
  40. 0 0
      frameworks/Groovy/grails/__init__.py
  41. 0 0
      frameworks/Haskell/snap/__init__.py
  42. 0 0
      frameworks/Haskell/wai/__init__.py
  43. 0 0
      frameworks/Haskell/yesod/__init__.py
  44. 0 0
      frameworks/Java/activeweb/__init__.py
  45. 0 0
      frameworks/Java/curacao/__init__.py
  46. 0 0
      frameworks/Java/dropwizard-mongodb/__init__.py
  47. 0 0
      frameworks/Java/dropwizard/__init__.py
  48. 0 0
      frameworks/Java/gemini/__init__.py
  49. 0 0
      frameworks/Java/grizzly-bm/__init__.py
  50. 0 0
      frameworks/Java/grizzly-jersey/__init__.py
  51. 0 0
      frameworks/Java/jetty-servlet/__init__.py
  52. 0 0
      frameworks/Java/netty/__init__.py
  53. 0 0
      frameworks/Java/ninja-standalone/__init__.py
  54. 0 0
      frameworks/Java/play1/__init__.py
  55. 0 0
      frameworks/Java/play1siena/__init__.py
  56. 0 0
      frameworks/Java/play2-java/__init__.py
  57. 0 0
      frameworks/Java/restexpress/__init__.py
  58. 0 0
      frameworks/Java/servlet/__init__.py
  59. 0 0
      frameworks/Java/servlet3-cass/__init__.py
  60. 0 0
      frameworks/Java/spark/__init__.py
  61. 0 0
      frameworks/Java/spring/__init__.py
  62. 0 0
      frameworks/Java/tapestry/__init__.py
  63. 0 0
      frameworks/Java/undertow-edge/__init__.py
  64. 0 0
      frameworks/Java/undertow/__init__.py
  65. 0 0
      frameworks/Java/vertx/__init__.py
  66. 0 0
      frameworks/Java/wicket/__init__.py
  67. 0 0
      frameworks/Java/wildfly-ee7/__init__.py
  68. 0 0
      frameworks/JavaScript/express/__init__.py
  69. 12 3
      frameworks/JavaScript/express/setup.sh
  70. 0 0
      frameworks/JavaScript/hapi/__init__.py
  71. 12 1
      frameworks/JavaScript/hapi/setup.sh
  72. 0 0
      frameworks/JavaScript/nodejs/__init__.py
  73. 12 1
      frameworks/JavaScript/nodejs/setup.sh
  74. 0 0
      frameworks/JavaScript/ringojs-convenient/__init__.py
  75. 0 0
      frameworks/JavaScript/ringojs/__init__.py
  76. 2 0
      frameworks/Lua/lapis/.gitignore
  77. 0 0
      frameworks/Lua/lapis/__init__.py
  78. 2 1
      frameworks/Lua/lapis/config.lua
  79. 2 1
      frameworks/Lua/lapis/config.moon
  80. 1 0
      frameworks/Lua/lapis/setup.sh
  81. 0 0
      frameworks/Lua/openresty/__init__.py
  82. 0 0
      frameworks/Nimrod/jester/__init__.py
  83. 0 0
      frameworks/Nimrod/nawak/__init__.py
  84. 160 22
      frameworks/PHP/README.md
  85. 2 0
      frameworks/PHP/Yii2/.gitignore
  86. 5 0
      frameworks/PHP/Yii2/README.md
  87. 0 0
      frameworks/PHP/Yii2/app/controllers/SiteController.php
  88. 1 1
      frameworks/PHP/Yii2/app/index.php
  89. 0 0
      frameworks/PHP/Yii2/app/runtime/keys.json
  90. 0 0
      frameworks/PHP/Yii2/bash_profile.sh
  91. 0 0
      frameworks/PHP/Yii2/benchmark_config
  92. 15 0
      frameworks/PHP/Yii2/composer.json
  93. 417 0
      frameworks/PHP/Yii2/composer.lock
  94. 0 0
      frameworks/PHP/Yii2/deploy/nginx.conf
  95. 8 0
      frameworks/PHP/Yii2/install.sh
  96. 0 0
      frameworks/PHP/Yii2/setup.sh
  97. 3 3
      frameworks/PHP/cakephp/.gitignore
  98. 0 0
      frameworks/PHP/cakephp/__init__.py
  99. 1 1
      frameworks/PHP/cakephp/app/webroot/index.php
  100. 0 7
      frameworks/PHP/cakephp/bash_profile.sh

+ 49 - 0
.mailmap

@@ -0,0 +1,49 @@
+Adam Chlipala <[email protected]> <[email protected]>
+
+Alex Schneider <[email protected]> <aschneider@techempower> Alexander Schneider
+Alex Schneider <[email protected]> Alexander Schneider <[email protected]>
+
+Christian Knuth <[email protected]> <[email protected]>
+
+Donovan Muller <[email protected]> donovanmuller <[email protected]>
+
+Eduardo Silva <[email protected]> <[email protected]>
+
+Gerard Roche <[email protected]> <[email protected]>
+
+Gjero Krsteski <[email protected]> gjerokrsteski <[email protected]> 
+Gjero Krsteski <[email protected]> g.krsteski <[email protected]>
+
+INADA Naoki <[email protected]> <[email protected]> 
+INADA Naoki <[email protected]> <[email protected]>
+
+James Yen <[email protected]> jyentechempower <[email protected]>
+
+Karol Buček <[email protected]> kares <[email protected]> 
+
+Lari Hotari <[email protected]> <[email protected]>
+
+Leandro Pereira <[email protected]> <[email protected]>
+
+Luis Neves <[email protected]> Luis Filipe dos Santos Neves <[email protected]>
+Luis Neves <[email protected]> luis.neves <[email protected]>
+
+Luiz Mineo <[email protected]> <[email protected]>
+
+Marko Asplund <[email protected]> marko asplund <[email protected]>
+Marko Asplund <[email protected]> marko asplund <[email protected]>
+
+Matic Žgur <[email protected]> <[email protected]>
+
+mcocciaTE <[email protected]> mcoccia <[email protected]>
+
+Raphael Andre Bauer <[email protected]> reyez <[email protected]>
+
+Stefan Geneshky <[email protected]> Stefan G <[email protected]>
+
+Stefano Casazza <[email protected]> stefanocasazza <[email protected]>
+
+Skamander <[email protected]> sksamuel <[email protected]>
+
+Tim Fox <[email protected]> purplefox <[email protected]>
+

+ 8 - 24
.travis.yml

@@ -3,15 +3,6 @@ python:
   - "2.7"
 
 env:
-  global:
-    - TFB_SERVER_HOST=127.0.0.1
-    - TFB_CLIENT_HOST=127.0.0.1
-    - TFB_DATABASE_HOST=127.0.0.1
-    - TFB_CLIENT_USER=travis
-    - TFB_DATABASE_USER=travis
-    - TFB_CLIENT_IDENTITY_FILE=/home/travis/.ssh/id_rsa
-    - TFB_DATABASE_IDENTITY_FILE=/home/travis/.ssh/id_rsa
-
   matrix:
 
     # Group tests by directory to logically break up travis-CI build. Otherwise
@@ -101,26 +92,25 @@ env:
     - "TESTDIR=PHP/cakephp"
     - "TESTDIR=PHP/hhvm"
     - "TESTDIR=PHP/php"
-    - "TESTDIR=PHP/php-codeigniter"
+    - "TESTDIR=PHP/codeigniter"
     - "TESTDIR=PHP/php-fatfree"
-    - "TESTDIR=PHP/php-fuel"
-    - "TESTDIR=PHP/php-kohana"
+    - "TESTDIR=PHP/fuel"
+    - "TESTDIR=PHP/kohana"
     - "TESTDIR=PHP/php-laravel"
-    - "TESTDIR=PHP/php-lithium"
+    - "TESTDIR=PHP/lithium"
     - "TESTDIR=PHP/php-micromvc"
     - "TESTDIR=PHP/php-phalcon"
     - "TESTDIR=PHP/php-phalcon-micro"
     - "TESTDIR=PHP/php-phpixie"
     - "TESTDIR=PHP/php-pimf"
-    - "TESTDIR=PHP/php-senthot"
     - "TESTDIR=PHP/php-silex"
     - "TESTDIR=PHP/php-silex-orm"
     - "TESTDIR=PHP/php-silica"
     - "TESTDIR=PHP/php-slim"
-    - "TESTDIR=PHP/php-symfony2"
-    - "TESTDIR=PHP/php-symfony2-stripped"
+    - "TESTDIR=PHP/symfony2"
+    - "TESTDIR=PHP/symfony2-stripped"
     - "TESTDIR=PHP/php-yaf"
-    - "TESTDIR=PHP/php-yii2"
+    - "TESTDIR=PHP/Yii2"
     - "TESTDIR=PHP/php-zend-framework"
     - "TESTDIR=PHP/php-zend-framework1"
     - "TESTDIR=PHP/phreeze"
@@ -173,10 +163,4 @@ install:
 script: 
   # Pick one test in this directory and verify
   - time ./toolset/run-ci.py verify "$TESTDIR"
-
-cache:
-  directories:
-    - installs/mono-3.2.8
-    - installs/py2
-    - installs/py3
-    - installs/perl-5.18
+  

+ 3 - 1
README.md

@@ -208,7 +208,9 @@ First, clone our repository.
 
 ```bash
 git clone https://github.com/TechEmpower/FrameworkBenchmarks.git
-sudo pip install -r FrameworkBenchmarks/config/python_requirements.txt
+cd FrameworkBenchmarks
+source toolset/setup/linux/prerequisites.sh
+sudo pip install -r config/python_requirements.txt
 ```
 
 To install TFB components onto the various servers, you must provide

+ 5 - 3
config/php-fpm.conf

@@ -137,8 +137,10 @@ events.mechanism = epoll
 ; Unix user/group of processes
 ; Note: The user is mandatory. If the group is not set, the default user's group
 ;       will be used.
-user = www-data
-group = www-data
+; Note: TFB does not run php-fpm as root, and therefore these directives are 
+;       ignored. Commenting them out avoids spurious log messages
+; user = testrunner
+; group = testrunner
 
 ; The address on which to accept FastCGI requests.
 ; Valid syntaxes are:
@@ -504,7 +506,7 @@ pm.max_spare_servers = 256
 ; Default Value: nothing is defined by default except the values in php.ini and
 ;                specified at startup with the -d argument
 ;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f [email protected]
-;php_flag[display_errors] = off
+php_flag[display_errors] = off
 ;php_admin_value[error_log] = /var/log/fpm-php.www.log
 ;php_admin_flag[log_errors] = on
 ;php_admin_value[memory_limit] = 32M

+ 0 - 0
frameworks/C++/cpoll_cppsp/__init__.py


+ 2 - 0
frameworks/C++/cpoll_cppsp/setup.sh

@@ -2,6 +2,8 @@
 
 sed -i 's|#define BENCHMARK_DB_HOST ".*"|#define BENCHMARK_DB_HOST "'"$DBHOST"'"|g' www/connectioninfo.H
 
+export CPLUS_INCLUDE_PATH=/usr/include/postgresql:/usr/include/postgresql/9.3/server:$CPLUS_INCLUDE_PATH
+
 make clean
 make
 cd $CPPSP_HOME

+ 0 - 0
frameworks/C++/treefrog/__init__.py


+ 0 - 0
frameworks/C++/wt/__init__.py


+ 1 - 0
frameworks/C++/wt/setup.sh

@@ -2,6 +2,7 @@
 
 # This has to be included here since it is one of the vars NOT copied from the original environment
 export LD_LIBRARY_PATH="${BOOST_LIB}:${WT_LIB}:${LD_LIBRARY_PATH}"
+export CPLUS_INCLUDE_PATH=/usr/include/postgresql:/usr/include/postgresql/9.3/server:$CPLUS_INCLUDE_PATH
 
 sed -i 's|INSERT_DB_HOST_HERE|'"${DBHOST}"'|g' benchmark.cpp
 

+ 0 - 0
frameworks/C/duda/__init__.py


+ 0 - 0
frameworks/C/lwan/__init__.py


+ 0 - 4
frameworks/C/lwan/bash_profile.sh

@@ -1,4 +0,0 @@
-#!/bin/bash
-
-export LWAN_ROOT=${IROOT}/lwan
-export LWAN_BUILD=${LWAN_ROOT}/build

+ 9 - 10
frameworks/C/lwan/install.sh

@@ -9,13 +9,12 @@ RETCODE=$(fw_exists ${INSTALLED_FILE})
 [ ! -e ${INSTALLED_FILE} -a -d ${IROOT}/lwan ] && rm -rf ${IROOT}/lwan
 
 # Lwan is only built during installation as a dependency sanity check.
-sudo apt-get update && \
-	sudo apt-get install -qqy libjemalloc-dev libmysqlclient-dev libsqlite3-dev && \
-	git clone git://github.com/lpereira/lwan.git && \
-        cd lwan && \
-        git checkout ${REV} && \
-        mkdir build && \
-        cd build && \
-        cmake .. -DCMAKE_BUILD_TYPE=Release && \
-        make techempower && \
-        touch ${INSTALLED_FILE}
+git clone git://github.com/lpereira/lwan.git
+cd lwan
+git checkout ${REV}
+mkdir build
+cd build
+cmake .. -DCMAKE_BUILD_TYPE=Release
+make techempower
+
+touch ${INSTALLED_FILE}

+ 8 - 1
frameworks/C/lwan/setup-mysql.sh

@@ -6,5 +6,12 @@ export MYSQL_PASS=benchmarkdbpass
 export MYSQL_HOST=$DBHOST
 export MYSQL_DB=hello_world
 
+export LWAN_ROOT=${IROOT}/lwan
+export LWAN_BUILD=${LWAN_ROOT}/build
+
+rm -rf ${LWAN_BUILD}
+mkdir -p ${LWAN_BUILD}
+cd ${LWAN_BUILD}
+cmake ${LWAN_ROOT} -DCMAKE_BUILD_TYPE=Release && make techempower
 cd $LWAN_ROOT/techempower
-$LWAN_BUILD/techempower/techempower &
+$LWAN_BUILD/techempower/techempower &

+ 8 - 1
frameworks/C/lwan/setup.sh

@@ -1,4 +1,11 @@
 #!/bin/bash
 
+export LWAN_ROOT=${IROOT}/lwan
+export LWAN_BUILD=${LWAN_ROOT}/build
+
+rm -rf ${LWAN_BUILD}
+mkdir -p ${LWAN_BUILD}
+cd ${LWAN_BUILD}
+cmake ${LWAN_ROOT} -DCMAKE_BUILD_TYPE=Release && make techempower
 cd $LWAN_ROOT/techempower
-$LWAN_BUILD/techempower/techempower &
+$LWAN_BUILD/techempower/techempower &

+ 0 - 0
frameworks/C/onion/__init__.py


+ 0 - 0
frameworks/CSharp/HttpListener/__init__.py


+ 0 - 0
frameworks/CSharp/aspnet-stripped/__init__.py


+ 0 - 0
frameworks/CSharp/aspnet/__init__.py


+ 0 - 0
frameworks/CSharp/evhttp-sharp/__init__.py


+ 0 - 0
frameworks/CSharp/nancy/__init__.py


+ 0 - 0
frameworks/CSharp/servicestack/__init__.py


+ 0 - 0
frameworks/Clojure/compojure/__init__.py


+ 0 - 0
frameworks/Clojure/http-kit/__init__.py


+ 0 - 0
frameworks/Clojure/luminus/__init__.py


+ 0 - 0
frameworks/Dart/dart-redstone/__init__.py


+ 0 - 0
frameworks/Dart/dart-start/__init__.py


+ 0 - 0
frameworks/Dart/dart-stream/__init__.py


+ 0 - 0
frameworks/Dart/dart/__init__.py


+ 0 - 0
frameworks/Elixir/WeberFramework/__init__.py


+ 0 - 0
frameworks/Go/beego/__init__.py


+ 0 - 0
frameworks/Go/falcore/__init__.py


+ 0 - 0
frameworks/Go/gin/__init__.py


+ 0 - 0
frameworks/Go/go/__init__.py


+ 0 - 0
frameworks/Go/gorail/__init__.py


+ 0 - 0
frameworks/Go/revel-jet/__init__.py


+ 0 - 0
frameworks/Go/revel-qbs/__init__.py


+ 0 - 0
frameworks/Go/revel/__init__.py


+ 0 - 0
frameworks/Go/webgo/__init__.py


+ 0 - 0
frameworks/Groovy/grails/__init__.py


+ 0 - 0
frameworks/Haskell/snap/__init__.py


+ 0 - 0
frameworks/Haskell/wai/__init__.py


+ 0 - 0
frameworks/Haskell/yesod/__init__.py


+ 0 - 0
frameworks/Java/activeweb/__init__.py


+ 0 - 0
frameworks/Java/curacao/__init__.py


+ 0 - 0
frameworks/Java/dropwizard-mongodb/__init__.py


+ 0 - 0
frameworks/Java/dropwizard/__init__.py


+ 0 - 0
frameworks/Java/gemini/__init__.py


+ 0 - 0
frameworks/Java/grizzly-bm/__init__.py


+ 0 - 0
frameworks/Java/grizzly-jersey/__init__.py


+ 0 - 0
frameworks/Java/jetty-servlet/__init__.py


+ 0 - 0
frameworks/Java/netty/__init__.py


+ 0 - 0
frameworks/Java/ninja-standalone/__init__.py


+ 0 - 0
frameworks/Java/play1/__init__.py


+ 0 - 0
frameworks/Java/play1siena/__init__.py


+ 0 - 0
frameworks/Java/play2-java/__init__.py


+ 0 - 0
frameworks/Java/restexpress/__init__.py


+ 0 - 0
frameworks/Java/servlet/__init__.py


+ 0 - 0
frameworks/Java/servlet3-cass/__init__.py


+ 0 - 0
frameworks/Java/spark/__init__.py


+ 0 - 0
frameworks/Java/spring/__init__.py


+ 0 - 0
frameworks/Java/tapestry/__init__.py


+ 0 - 0
frameworks/Java/undertow-edge/__init__.py


+ 0 - 0
frameworks/Java/undertow/__init__.py


+ 0 - 0
frameworks/Java/vertx/__init__.py


+ 0 - 0
frameworks/Java/wicket/__init__.py


+ 0 - 0
frameworks/Java/wildfly-ee7/__init__.py


+ 0 - 0
frameworks/JavaScript/express/__init__.py


+ 12 - 3
frameworks/JavaScript/express/setup.sh

@@ -3,8 +3,17 @@
 sed -i 's|mongodb://.*/hello_world|mongodb://'"${DBHOST}"'/hello_world|g' app.js
 sed -i 's|localhost|'"${DBHOST}"'|g' app.js
 
-export NODE_ENV=production
-export PATH="$NODE_HOME/bin:$PATH"
+export NODE_HOME=${IROOT}/node-v0.10.8-linux-x64
+export PATH=$PATH:$NODE_HOME/bin
 
 ${NODE_HOME}/bin/npm install
-${NODE_HOME}/bin/node app &
+${NODE_HOME}/bin/node app &
+
+# !DO NOT REMOVE!
+#
+# It takes `node app` a few seconds to turn on and 
+# then fork. If you remove this sleep, the parent shell 
+# executing this script will be terminated before the 
+# application has time to awaken and be forked, and 
+# express will fail to be started
+sleep 5

+ 0 - 0
frameworks/JavaScript/hapi/__init__.py


+ 12 - 1
frameworks/JavaScript/hapi/setup.sh

@@ -3,6 +3,17 @@
 sed -i 's|localhost|'"${DBHOST}"'|g' app.js
 
 export NODE_ENV=production
+export NODE_HOME=${IROOT}/node-v0.10.8-linux-x64
+export PATH=$PATH:$NODE_HOME/bin
 
 ${NODE_HOME}/bin/npm install
-${NODE_HOME}/bin/node app &
+${NODE_HOME}/bin/node app &
+
+# !DO NOT REMOVE!
+#
+# It takes `node app` a few seconds to turn on and 
+# then fork. If you remove this sleep, the parent shell 
+# executing this script will be terminated before the 
+# application has time to awaken and be forked, and 
+# express will fail to be started
+sleep 5

+ 0 - 0
frameworks/JavaScript/nodejs/__init__.py


+ 12 - 1
frameworks/JavaScript/nodejs/setup.sh

@@ -4,6 +4,17 @@ sed -i 's|localhost|'"${DBHOST}"'|g' hello.js
 sed -i 's|mongodb//.*/hello_world|mongodb//'"${DBHOST}"'/hello_world|g' hello.js
 
 export NODE_ENV=production
+export NODE_HOME=${IROOT}/node-v0.10.8-linux-x64
+export PATH=$PATH:$NODE_HOME/bin
 
 ${NODE_HOME}/bin/npm install
-${NODE_HOME}/bin/node hello.js &
+${NODE_HOME}/bin/node hello.js &
+
+# !DO NOT REMOVE!
+#
+# It takes `node app` a few seconds to turn on and 
+# then fork. If you remove this sleep, the parent shell 
+# executing this script will be terminated before the 
+# application has time to awaken and be forked, and 
+# express will fail to be started
+sleep 5

+ 0 - 0
frameworks/JavaScript/ringojs-convenient/__init__.py


+ 0 - 0
frameworks/JavaScript/ringojs/__init__.py


+ 2 - 0
frameworks/Lua/lapis/.gitignore

@@ -0,0 +1,2 @@
+logs
+nginx.conf.compiled

+ 0 - 0
frameworks/Lua/lapis/__init__.py


+ 2 - 1
frameworks/Lua/lapis/config.lua

@@ -11,7 +11,8 @@ return config("production", function()
   return postgres({
     backend = "pgmoon",
     database = "hello_world",
-    user = "postgres",
+    user = "benchmarkdbuser",
+    password = "benchmarkdbpass",
     host = "DBHOSTNAME"
   })
 end)

+ 2 - 1
frameworks/Lua/lapis/config.moon

@@ -9,6 +9,7 @@ config "production", ->
   postgres {
     backend: "pgmoon"
     database: "hello_world"
-    user: "postgres"
+    user: "benchmarkdbuser"
+    password: "benchmarkdbpass"
     host: "DBHOSTNAME"
   }

+ 1 - 0
frameworks/Lua/lapis/setup.sh

@@ -1,6 +1,7 @@
 #!/bin/bash
 
 sed -i 's|DBHOSTNAME|'"${DBHOST}"'|g' config.lua
+sed -i 's|DBHOSTNAME|'"${DBHOST}"'|g' config.moon
 sed -i 's|DBHOSTNAME|'"${DBHOST}"'|g' nginx.conf
 
 export PATH=${OPENRESTY_HOME}/nginx/sbin:$PATH

+ 0 - 0
frameworks/Lua/openresty/__init__.py


+ 0 - 0
frameworks/Nimrod/jester/__init__.py


+ 0 - 0
frameworks/Nimrod/nawak/__init__.py


+ 160 - 22
frameworks/PHP/README.md

@@ -1,22 +1,160 @@
-# Tricks to writing PHP-based Frameworks
-
-Many servers use the `php`, `php-fpm`, or other binaries. If your
-server launches with `sudo` (e.g. `sudo php-fpm`) then you should be 
-aware that using sudo resets the `$PATH` environment variable, and your 
-specific binary may not be the one being used. The solution is to 
-always use `sudo <full-path-to-my-binary>`. For example, `cakephp`'s
-`bash_profile.sh` sets the variable `$PHP_FPM` to be the full path 
-to the `php-fpm` binary that `cakephp` wants, and then uses `sudo $PHP_FPM`
-to ensure that the `php-fpm` binary used by sudo is the exact binary 
-desired. 
-
-# Dependency Management
-
-Many PHP apps use https://getcomposer.org/ for dependency management.
-To support this, use `fw_depends php composer` (note that order is 
-important, composer requires php and therefore should be listed after
-PHP), and then add `$IROOT/php-composer` to the `PATH` in your `bash_profile.sh`. 
-For example: 
-
-    export COMPOSER_HOME=${IROOT}/php-composer
-    export PATH="$COMPOSER_HOME:$PATH"
+# PHP Version
+
+[Currently this toolset runs PHP 5.5.17](https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/toolset/setup/linux/languages/php.sh). At the moment all PHP-based frameworks use the 
+same PHP version, but we are open to receiving a pull request
+that enables supporting multiple versions. 
+
+# PHP Acceleration and Caching
+
+Caching the output of the PHP bytecode compiler is expressly 
+allowed by this benchmark. As we use PHP 5.5, which comes 
+with opcache built in, we recommend you use this. However, 
+some frameworks utilize APC instead as switching can be 
+problematic (e.g. APC allows arbitrary data caching, while 
+opcache). 
+
+Caching the output of parsing your configuration files is 
+also expressly allowed (e.g. file caching, metadata caching).
+Some frameworks use APCu or memcached to achieve this. 
+
+Caching of the classloader (often referred to as optimizing
+the classloader) is also allowed. Most frameworks have their 
+own methods of doing this. 
+
+*Caching of any data fetched from the database is not allowed*. 
+Specifically, things such as [Doctrine's Result Cache](http://doctrine-orm.readthedocs.org/en/latest/reference/caching.html#result-cache) are inadmissible. 
+
+However, if you are using an ORM that prepares SQL 
+statements in some way, such as how 
+[Doctrine](http://doctrine-orm.readthedocs.org/en/latest/reference/caching.html#query-cache) 
+translates DQL into SQL, this translated form can be 
+cached, as long as you are dynamically accepting 
+query parameters. 
+
+Caching any data using databases (Redis, MongoDB, etc) 
+is discouraged, as 1) our databases run on a separate 
+computer across the network, so you won't see much 
+benefit 2) your usage of the DB *may* impact other 
+framework's tests, which we cannot allow. You may launch 
+a DB locally on the application server as part of your 
+`setup.sh` scripts and utilize it for caching the allowable
+cache items, if you so desire, but it's normally much 
+easier to use systems such as APCu.
+
+Ask if you are not certain.
+
+# Adding New PHP-based Frameworks
+
+Most PHP frameworks use `fw_depends php nginx composer` in their `install.sh` file, 
+which installs PHP, Nginx, and Composer automatically. They then create a `setup.sh`
+containing these lines (comments added to clarify what's happening)
+
+    # Explanation of variables provided by toolset:
+    #   FWROOT - absolute path to framework toolset, normally 
+    #            something like /home/username/FrameworkBenchmarks
+    #   TROOT  - absolute path to this framework's folder, normally
+    #            something like /home/username/FrameworkBenchmarks/frameworks/PHP/cakephp
+    #   IROOT  - absolute path to the location where the toolset has installed software, 
+    #            something like /home/username/FrameworkBenchmarks/installs
+    #
+    # As of writing fw_depends installs 5.5.17 into the installer root
+    export PHP_HOME=${IROOT}/php-5.5.17
+    export PHP_FPM=$PHP_HOME/sbin/php-fpm
+    export NGINX_HOME=${IROOT}/nginx
+    
+    # Uses the full path to php-fpm
+    #   - php-fpm configuration is located in the config folder found in the 
+    #     root of this project
+    #   - We tell PHP-FPM to place it's PID file into the deploy folder
+    $PHP_FPM --fpm-config $FWROOT/config/php-fpm.conf -g $TROOT/deploy/php-fpm.pid
+    # Turn on nginx using the configuration file found in this framework's deploy
+    # folder
+    $NGINX_HOME/sbin/nginx -c $TROOT/deploy/nginx.conf
+
+When using `php`, `php-fpm`, or other binaries, always use the full path 
+to the binary, e.g. instead of `php <command>`, 
+use `/home/foo/FrameworkBenchmarks/installs/php-5.5.17/bin/php <your command>`. 
+
+# Dependency Management Using Composer
+
+Many PHP apps use [Composer](https://getcomposer.org/) for dependency management, 
+which greatly simplifies downloading the framework, loading the framework, and 
+upgrading the framework version in the future. 
+
+There are two main guidelines for PHP frameworks: 
+
+* **Never include the source code for your framework into this repository.** Download it 
+using Composer, wget, or some other tool
+* **When using Composer, always add a `composer.lock` file in addition to the `composer.json` file**. 
+The lock file is a fully-defined file generated by composer 1) reading your JSON file 2) finding all 
+dependencies 3) downloading a lot of data from Github. Without this lock file, composer takes 2-3x 
+longer to run, and it can even halt and require user input
+
+## Setting up Composer
+
+Add a `composer.json` file to your framework's root folder, e.g. `php-fuel/composer.json`. 
+Ensure your `install.sh` lists composer as a dependency, and uses `composer.phar` to 
+install the dependencies required by your project. 
+
+    # Note the order! Composer depends on PHP so it has to come second
+    fw_depends php composer 
+    
+    # Download dependencies
+    ${IROOT}/php-5.5.17/bin/php $IROOT/composer.phar install \
+    --no-interaction --working-dir $TROOT --no-progress \
+    --optimize-autoloader 
+
+After installation runs, your framework folder will have a new `vendor` folder, 
+e.g. `php-fuel/vendor` that contains all dependencies. Update your PHP scripts
+to either directly reference files inside of vendor, or use the `vendor/autoload.php`
+file. 
+
+## Generating composer.lock file
+
+Composer uses Github *a lot*, enough so that it is common for it to exceed the 
+API limit and cause infinite hangs or installation failures. To avoid this, it 
+is necessary to generate a `composer.lock` file. If you're lucky, you can run 
+`toolset/run-tests.py --install server --test <your framework> --install-only`,
+which will run your `install.sh` file and leave the `composer.lock` file right
+next to your `composer.json` file. If this works, just add the lock file to 
+the repository and you're done. There is more info on this [here](https://getcomposer.org/doc/03-cli.md#install)
+and [here](https://circleci.com/docs/composer-api-rate-limit)
+
+*Note:* You may have to force-add the lock file (e.g. `git add -f composer.lock`), 
+because some gitignore files in this repo contain `*.lock` to avoid Ruby's lock files. 
+
+If you are prompted for input during the `run-tests.py` script above, then you
+need to generate your lock file manually so that you may answer the input 
+queries as they are shown. Use these steps
+
+    # Switch to the user that runs tests
+    sudo su testrunner
+    
+    # Define the environment variables you need (modify as needed)
+    export IROOT=/home/you/FrameworkBenchmarks/installs
+    export TROOT=/home/you/FrameworkBenchmarks/frameworks/PHP/php-yii2
+    
+    # Run the installation shown above
+    #
+    # This will manually prompt you for your Github credentials 
+    # to avoid the Github rate limit
+    # When this command completes, you will have a lock file 
+    ${IROOT}/php-5.5.17/bin/php $IROOT/composer.phar install \
+      --working-dir $TROOT
+    
+    # Add the lock file to this repository
+    git add -f composer.lock
+
+## Updating Composer setup
+
+If you update `composer.json`, you need to regenerate the lock
+file. If you forget to do this, you will see this error message 
+when running:
+
+    Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
+
+# Debugging PHP Frameworks
+
+The first stop for HTTP 500 errors is to enable stack traces. 
+Update `config/php-fpm.conf` to include `php_flag[display_errors] = on`. 
+If you don't use php-fpm, update the `config/php.ini`

+ 2 - 0
frameworks/PHP/Yii2/.gitignore

@@ -0,0 +1,2 @@
+vendor
+deploy/php-fpm.pid

+ 5 - 0
frameworks/PHP/php-yii2/README.md → frameworks/PHP/Yii2/README.md

@@ -2,6 +2,11 @@
 
 This is the Yii2 portion of a [benchmarking test suite](../) comparing a variety of web development platforms.
 
+This uses PHP's composer for dependency resolution. Note 
+that [issue 5083](https://github.com/yiisoft/yii2/issues/5083)
+affects the `composer.json` file defined here (also see 
+[this](https://github.com/francoispluchino/composer-asset-plugin/issues/29) and [this](https://stackoverflow.com/questions/25882271/cannot-update-yii2-via-composer-bower-asset-jquery-could-not-be-found))
+
 ### JSON Encoding Test
 Uses the PHP standard [JSON encoder](http://www.php.net/manual/en/function.json-encode.php).
 

+ 0 - 0
frameworks/PHP/php-yii2/app/controllers/SiteController.php → frameworks/PHP/Yii2/app/controllers/SiteController.php


+ 1 - 1
frameworks/PHP/php-yii2/app/index.php → frameworks/PHP/Yii2/app/index.php

@@ -6,7 +6,7 @@
 //error_reporting(E_ALL);
 //ini_set('display_errors','on');
 
-require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
+require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
 
 $config = [
     'id' => 'basic',

+ 0 - 0
frameworks/PHP/php-yii2/app/runtime/keys.json → frameworks/PHP/Yii2/app/runtime/keys.json


+ 0 - 0
frameworks/PHP/php-fuel/bash_profile.sh → frameworks/PHP/Yii2/bash_profile.sh


+ 0 - 0
frameworks/PHP/php-yii2/benchmark_config → frameworks/PHP/Yii2/benchmark_config


+ 15 - 0
frameworks/PHP/Yii2/composer.json

@@ -0,0 +1,15 @@
+{
+    "minimum-stability": "dev",
+    "require": {
+        "php": ">=5.4.0",
+        "yiisoft/yii2": "*",
+        "bower-asset/jquery": "@stable"
+    },
+    "extra": {
+        "asset-installer-paths": {
+            "npm-asset-library": "vendor/npm",
+            "bower-asset-library": "vendor/bower"
+        }
+    }
+}
+

+ 417 - 0
frameworks/PHP/Yii2/composer.lock

@@ -0,0 +1,417 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+        "This file is @generated automatically"
+    ],
+    "hash": "7bc824c517d729d19ba6d6a2711e8082",
+    "packages": [
+        {
+            "name": "bower-asset/jquery",
+            "version": "2.1.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/jquery/jquery.git",
+                "reference": "8f2a9d9272d6ed7f32d3a484740ab342c02541e0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/jquery/jquery/zipball/8f2a9d9272d6ed7f32d3a484740ab342c02541e0",
+                "reference": "8f2a9d9272d6ed7f32d3a484740ab342c02541e0",
+                "shasum": ""
+            },
+            "require-dev": {
+                "bower-asset/qunit": "1.14.0",
+                "bower-asset/requirejs": "2.1.10",
+                "bower-asset/sinon": "1.8.1",
+                "bower-asset/sizzle": "2.1.1-patch2"
+            },
+            "type": "bower-asset-library",
+            "extra": {
+                "bower-asset-main": "dist/jquery.js",
+                "bower-asset-ignore": [
+                    "**/.*",
+                    "build",
+                    "speed",
+                    "test",
+                    "*.md",
+                    "AUTHORS.txt",
+                    "Gruntfile.js",
+                    "package.json"
+                ]
+            },
+            "license": [
+                "MIT"
+            ],
+            "keywords": [
+                "javascript",
+                "jquery",
+                "library"
+            ]
+        },
+        {
+            "name": "bower-asset/jquery.inputmask",
+            "version": "3.1.48",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/RobinHerbots/jquery.inputmask.git",
+                "reference": "d9ebcf6ce4be6bd8642a10c633fe950c0c0f0a9d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/RobinHerbots/jquery.inputmask/zipball/d9ebcf6ce4be6bd8642a10c633fe950c0c0f0a9d",
+                "reference": "d9ebcf6ce4be6bd8642a10c633fe950c0c0f0a9d",
+                "shasum": ""
+            },
+            "require": {
+                "bower-asset/jquery": ">=1.7"
+            },
+            "type": "bower-asset-library",
+            "extra": {
+                "bower-asset-main": [
+                    "./dist/inputmask/jquery.inputmask.js",
+                    "./dist/inputmask/jquery.inputmask.extensions.js",
+                    "./dist/inputmask/jquery.inputmask.date.extensions.js",
+                    "./dist/inputmask/jquery.inputmask.numeric.extensions.js",
+                    "./dist/inputmask/jquery.inputmask.phone.extensions.js",
+                    "./dist/inputmask/jquery.inputmask.regex.extensions.js"
+                ],
+                "bower-asset-ignore": [
+                    "**/.*",
+                    "qunit/",
+                    "nuget/",
+                    "tools/",
+                    "js/",
+                    "*.md",
+                    "build.properties",
+                    "build.xml",
+                    "jquery.inputmask.jquery.json"
+                ]
+            },
+            "license": [
+                "http://opensource.org/licenses/mit-license.php"
+            ],
+            "description": "jquery.inputmask is a jquery plugin which create an input mask.",
+            "keywords": [
+                "form",
+                "input",
+                "inputmask",
+                "jQuery",
+                "mask",
+                "plugins"
+            ]
+        },
+        {
+            "name": "bower-asset/punycode",
+            "version": "v1.3.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/bestiejs/punycode.js.git",
+                "reference": "38c8d3131a82567bfef18da09f7f4db68c84f8a3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/bestiejs/punycode.js/zipball/38c8d3131a82567bfef18da09f7f4db68c84f8a3",
+                "reference": "38c8d3131a82567bfef18da09f7f4db68c84f8a3",
+                "shasum": ""
+            },
+            "type": "bower-asset-library",
+            "extra": {
+                "bower-asset-main": "punycode.js",
+                "bower-asset-ignore": [
+                    "coverage",
+                    "tests",
+                    ".*",
+                    "component.json",
+                    "Gruntfile.js",
+                    "node_modules",
+                    "package.json"
+                ]
+            }
+        },
+        {
+            "name": "bower-asset/yii2-pjax",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/yiisoft/jquery-pjax.git",
+                "reference": "fb92be865c0fd6583714475cb7d629020749d73f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/yiisoft/jquery-pjax/zipball/fb92be865c0fd6583714475cb7d629020749d73f",
+                "reference": "fb92be865c0fd6583714475cb7d629020749d73f",
+                "shasum": ""
+            },
+            "require": {
+                "bower-asset/jquery": ">=1.8"
+            },
+            "type": "bower-asset-library",
+            "extra": {
+                "bower-asset-main": "./jquery.pjax.js",
+                "bower-asset-ignore": [
+                    ".travis.yml",
+                    "Gemfile",
+                    "Gemfile.lock",
+                    "vendor/",
+                    "script/",
+                    "test/"
+                ]
+            },
+            "time": "2014-12-04 17:15:44"
+        },
+        {
+            "name": "cebe/markdown",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/cebe/markdown.git",
+                "reference": "f89dc1da1fc6823f0286d6cad736a642efd0f59e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/cebe/markdown/zipball/f89dc1da1fc6823f0286d6cad736a642efd0f59e",
+                "reference": "f89dc1da1fc6823f0286d6cad736a642efd0f59e",
+                "shasum": ""
+            },
+            "require": {
+                "lib-pcre": "*",
+                "php": ">=5.4.0"
+            },
+            "require-dev": {
+                "cebe/indent": "*",
+                "facebook/xhprof": "*@dev",
+                "phpunit/phpunit": "3.7.*"
+            },
+            "bin": [
+                "bin/markdown"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "cebe\\markdown\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Carsten Brandt",
+                    "email": "[email protected]",
+                    "homepage": "http://cebe.cc/",
+                    "role": "Creator"
+                }
+            ],
+            "description": "A super fast, highly extensible markdown parser for PHP",
+            "homepage": "https://github.com/cebe/markdown#readme",
+            "keywords": [
+                "extensible",
+                "fast",
+                "gfm",
+                "markdown",
+                "markdown-extra"
+            ],
+            "time": "2014-12-18 00:45:32"
+        },
+        {
+            "name": "ezyang/htmlpurifier",
+            "version": "v4.6.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ezyang/htmlpurifier.git",
+                "reference": "6f389f0f25b90d0b495308efcfa073981177f0fd"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/6f389f0f25b90d0b495308efcfa073981177f0fd",
+                "reference": "6f389f0f25b90d0b495308efcfa073981177f0fd",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.2"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "HTMLPurifier": "library/"
+                },
+                "files": [
+                    "library/HTMLPurifier.composer.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "LGPL"
+            ],
+            "authors": [
+                {
+                    "name": "Edward Z. Yang",
+                    "email": "[email protected]",
+                    "homepage": "http://ezyang.com",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Standards compliant HTML filter written in PHP",
+            "homepage": "http://htmlpurifier.org/",
+            "keywords": [
+                "html"
+            ],
+            "time": "2013-11-30 08:25:19"
+        },
+        {
+            "name": "yiisoft/yii2",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/yiisoft/yii2-framework.git",
+                "reference": "82b988f8d0344b13ce2f77686fe7551a5b242d35"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/82b988f8d0344b13ce2f77686fe7551a5b242d35",
+                "reference": "82b988f8d0344b13ce2f77686fe7551a5b242d35",
+                "shasum": ""
+            },
+            "require": {
+                "bower-asset/jquery": "2.1.*@stable | 1.11.*@stable",
+                "bower-asset/jquery.inputmask": "3.1.*",
+                "bower-asset/punycode": "1.3.*",
+                "bower-asset/yii2-pjax": ">=2.0.1",
+                "cebe/markdown": "~1.0.0",
+                "ext-mbstring": "*",
+                "ext-mcrypt": "*",
+                "ezyang/htmlpurifier": "4.6.*",
+                "lib-pcre": "*",
+                "php": ">=5.4.0",
+                "yiisoft/yii2-composer": "*"
+            },
+            "bin": [
+                "yii"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "yii\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Qiang Xue",
+                    "email": "[email protected]",
+                    "homepage": "http://www.yiiframework.com/",
+                    "role": "Founder and project lead"
+                },
+                {
+                    "name": "Alexander Makarov",
+                    "email": "[email protected]",
+                    "homepage": "http://rmcreative.ru/",
+                    "role": "Core framework development"
+                },
+                {
+                    "name": "Maurizio Domba",
+                    "homepage": "http://mdomba.info/",
+                    "role": "Core framework development"
+                },
+                {
+                    "name": "Carsten Brandt",
+                    "email": "[email protected]",
+                    "homepage": "http://cebe.cc/",
+                    "role": "Core framework development"
+                },
+                {
+                    "name": "Timur Ruziev",
+                    "email": "[email protected]",
+                    "homepage": "http://resurtm.com/",
+                    "role": "Core framework development"
+                },
+                {
+                    "name": "Paul Klimov",
+                    "email": "[email protected]",
+                    "role": "Core framework development"
+                }
+            ],
+            "description": "Yii PHP Framework Version 2",
+            "homepage": "http://www.yiiframework.com/",
+            "keywords": [
+                "framework",
+                "yii2"
+            ],
+            "time": "2014-12-18 03:08:20"
+        },
+        {
+            "name": "yiisoft/yii2-composer",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/yiisoft/yii2-composer.git",
+                "reference": "665091a932d72ec27eb4d0a22f0ea63861648b30"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/yiisoft/yii2-composer/zipball/665091a932d72ec27eb4d0a22f0ea63861648b30",
+                "reference": "665091a932d72ec27eb4d0a22f0ea63861648b30",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "1.0.0"
+            },
+            "type": "composer-plugin",
+            "extra": {
+                "class": "yii\\composer\\Plugin",
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "yii\\composer\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Qiang Xue",
+                    "email": "[email protected]"
+                }
+            ],
+            "description": "The composer plugin for Yii extension installer",
+            "keywords": [
+                "composer",
+                "extension installer",
+                "yii2"
+            ],
+            "time": "2014-12-08 17:50:10"
+        }
+    ],
+    "packages-dev": [],
+    "aliases": [],
+    "minimum-stability": "dev",
+    "stability-flags": {
+        "bower-asset/jquery": 0
+    },
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": {
+        "php": ">=5.4.0"
+    },
+    "platform-dev": []
+}

+ 0 - 0
frameworks/PHP/php-yii2/deploy/nginx.conf → frameworks/PHP/Yii2/deploy/nginx.conf


+ 8 - 0
frameworks/PHP/Yii2/install.sh

@@ -0,0 +1,8 @@
+#!/bin/bash
+
+fw_depends php nginx composer
+
+PHP_HOME=${IROOT}/php-5.5.17
+${PHP_HOME}/bin/php $IROOT/composer.phar install \
+  --no-interaction --working-dir $TROOT \
+  --no-progress --optimize-autoloader 

+ 0 - 0
frameworks/PHP/php-yii2/setup.sh → frameworks/PHP/Yii2/setup.sh


+ 3 - 3
frameworks/PHP/cakephp/.gitignore

@@ -1,8 +1,8 @@
-/app/tmp
-/lib/Cake/Console/Templates/skel/tmp/
+app/tmp
 /plugins
-/vendors
 /build
 /dist
 .DS_Store
 /tags
+app/Vendor
+deploy/php-fpm.pid

+ 0 - 0
frameworks/PHP/cakephp/__init__.py


+ 1 - 1
frameworks/PHP/cakephp/app/webroot/index.php

@@ -77,7 +77,7 @@ if (php_sapi_name() == 'cli-server') {
 
 if (!defined('CAKE_CORE_INCLUDE_PATH')) {
 	if (function_exists('ini_set')) {
-		ini_set('include_path', ROOT . DS . 'lib' . PATH_SEPARATOR . ini_get('include_path'));
+		ini_set('include_path', ROOT . DS . APP_DIR . DS . 'Vendor' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib' . PATH_SEPARATOR . ini_get('include_path'));
 	}
 	if (!include ('Cake' . DS . 'bootstrap.php')) {
 		$failed = true;

+ 0 - 7
frameworks/PHP/cakephp/bash_profile.sh

@@ -1,7 +0,0 @@
-#!/bin/bash
-
-export PHP_HOME=${IROOT}/php-5.5.17
-
-export PHP_FPM=$PHP_HOME/sbin/php-fpm
-
-export NGINX_HOME=${IROOT}/nginx

Some files were not shown because too many files changed in this diff