Mobile Apps Platform
- Mobile App / Web App Development Process
- Mobile App / Android, iPhone App Development Cost
- Native App Development vs Hybrid / PhoneGap App Development
Web Apps Platform
- Web Application Planning
- PHP vs ASP.net Comparison
- Ruby on Rails vs PHP Comparison
- Web Application Framework Comparison
- Web Application Development Process
- Guide to Web Application Development
- Internet Database Development
- PHP & MySQL Development
Online Business
- How Start an Online Business / Store
- Magento Issues
- Website Launch Checklist / Ecommerce Application Launch Checklist
- Enterprise eCommerce Platform
- Magento vs OScommerce vs Zen Cart vs OpenCart Comentum eCommerce Comparison
- Best eCommerce software
- What is PCI DSS Compliance
- eCommerce SEO / Shopping Cart SEO
- FAQ, Comparison and Guide to Merchant Accounts and Payment Gateways
- e-Business Strategy and Process
- Internet / Online Business Ideas and Strategies for Entrepreneurs
- Hiring a Web Application Company Considerations
- How to Hire a Good Web Application Development Company
- Web Development Cost Comparison
Server and Hosting
- Amazon EC2 vs Rackspace Cloud vs Linode
- Cloud vs Dedicated Servers vs Colocation Comparison
- Dedicated / Managed Hosting Comparison
- Shared Hosting vs Managed Hosting
- Domains, DNS, Web Hosting, Email
- Domain Name System and DNS Servers
- All About Domain Name Registration
- Email Services Comparison
- Who is winning the spam war?
- Email Services
CMS Applications
- What is Content Management System (CMS)
- Drupal vs Joomla vs WordPress CMS Comparison
- Enterprise CMS Comparison - Summary
- Enterprise Content Management System vs Open Source CMS - Detailed Guide, Security, Performance Statistics
- Pros and Cons of Wordpress, Joomla, Drupal
Marketing
Design
Web Application Frameworks, Comparison and Benchmarks
Glue Framework vs Full Stack Framework, Performance and Benchmark Comparison of PHP MVC Frameworks: Comentum Framework, CodeIgniter, Zend Framework, CakePHP, Yii, Kohana, DooPHP
What is a Web Application Framework
A Web Application Framework is a patterned code system consisting of common program libraries and tools providing an organized environment for developers to program and help to create structured, maintainable code. Using a Web Application Framework provides the following advantages:
- Organized and structured programming environment creates maintainable code — it will be easier to make updates or changes to the code or have new programmer(s) or programming team(s) take over the Web Application project maintenance.
- Promotes writing a function (or class) once and reusing it in different parts of the Web Application instead of repeating the same function in different places. So, if there is a need to change the function, it can be done in one place instead of having to change it in several places.
- Provides a better environment for multiple programmers to work on the Web Application Project.
- By separating the HTML and CSS from the PHP code, HTML and CSS designers can work on the design (refereed to "view") folder without having to deal or tinker with the PHP code.
- Most frameworks come with the common functionalities (classes, helpers, and libraries), such as database access, form input security checks, validating forms, uploading photos, sending emails, etc. — those common libraries provide an streamlined and fast method of coding without having to rewrite code for common functions.
- Provides better beta testing and bug fixing environment — it promotes testing one functionality at a time, instead of testing the whole Web Application which usually causes programmers to miss programming bugs.
What is Model View Controller (MVC)
Web Application Frameworks are organized in a structural pattern — this promotes better code organization and code reuse.
In a Model View Controller (MVC) pattern, the code is organized in three different sections:
- Model — data interfacing — this is where the data updates are occurring — the developer writes the function in the Controller referencing a function in the Model telling it to save the user's submitted information to the database.
- View — user interface — this is where the application interface such as HTML and CSS exist and are managed. For example a Contact Us form.
- Controller — application interaction — this is where the application actions are occurring such as a function that takes the user's submitted information and processes it. s
Different types of MVC Framework
Glue Framework — More Flexible
Glue frameworks provide an environment with a wide variety of components and libraries, and the programmers have the control of the structure and flow of the program actions, and can pick and choose any library or component at their own discretion.
In my opinion, Glue Frameworks provide a better environment for custom Web Applications with complex business logic. In most of today's custom business Web Applications, there are a lot of complex business logic requirements and many exceptions to the rules functions — it is much easier to implement custom, complex logic into a Glue Framework.
Below are some examples of Glue Frameworks:- Comentum Framework
- Zend Framework
- Codeigniter Framework
Full Stack Framework — Strict and Less Control
Full Stack Frameworks provide an environment with libraries and components that are integrated, forcing programmers to use most of the libraries and components based on the framework's structural flow and guidelines.
In my opinion, Full Stack Frameworks provide a better environment for common Web Applications that do not need much customization and do not have lots of complex business logic.
Below are some examples of Full Stack Frameworks:- CakePHP
- Symfony
Performance
Comentum used Apache Bench to test the performance of different PHP Frameworks and below are the results (this test was run on November 9, 2012).
Hardware:CPU: Xeon Quad Core X3220 (2.4 Ghz)
RAM: 4GB
OS and Server:
CentOS 6.2 x86_64
Apache 2.2.15
Request Per Second - More is Better
| PHP Framework | Requests per second |
|---|---|
| Comentum Framework | 1449.87 |
| DooPHP Framework | 762.95 |
| CodeIgniter Framework | 468.21 |
| Yii Framework | 302.99 |
| Kohana Framework | 301.46 |
| CakePHP Framework | 133.94 |
| Zend Framework | 70.50 |
Requests Completed - More is Better
| PHP Framework | Requests Completed |
|---|---|
| Comentum Framework | 43515 |
| DooPHP Framework | 22890 |
| CodeIgniter Framework | 14048 |
| Yii Framework | 9090 |
| Kohana Framework | 9045 |
| CakePHP Framework | 4020 |
| Zend Framework | 2115 |
------------------- Comentum Framework ------------------------------
# ab -t30S -c10 http://ecommercesoftwareinfo.com/frameworkbenchmarks/ComentumFramework/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking ecommercesoftwareinfo.com (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Finished 43515 requests
Server Software: Apache
Server Hostname: ecommercesoftwareinfo.com
Server Port: 80
Document Path: /frameworkbenchmarks/ComentumFramework/
Document Length: 11 bytes
Concurrency Level: 10
Time taken for tests: 30.013 seconds
Complete requests: 43515
Failed requests: 0
Write errors: 0
Total transferred: 25326250 bytes
HTML transferred: 478665 bytes
Requests per second: 1449.87 [#/sec] (mean)
Time per request: 6.897 [ms] (mean)
Time per request: 0.690 [ms] (mean, across all concurrent requests)
Transfer rate: 824.07 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 3
Processing: 2 7 5.3 6 291
Waiting: 1 6 5.3 6 291
Total: 2 7 5.3 6 291
Percentage of the requests served within a certain time (ms)
50% 6
66% 7
75% 7
80% 8
90% 9
95% 10
98% 12
99% 13
100% 291 (longest request)
------------------------------ DooPHP --------------------------------------------
# ab -t30S -c10 http://ecommercesoftwareinfo.com/frameworkbenchmarks/DooPHP/app/index.php
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking ecommercesoftwareinfo.com (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Finished 22890 requests
Server Software: Apache
Server Hostname: ecommercesoftwareinfo.com
Server Port: 80
Document Path: /frameworkbenchmarks/DooPHP/app/index.php
Document Length: 11 bytes
Concurrency Level: 10
Time taken for tests: 30.002 seconds
Complete requests: 22890
Failed requests: 0
Write errors: 0
Total transferred: 3684920 bytes
HTML transferred: 251790 bytes
Requests per second: 762.95 [#/sec] (mean)
Time per request: 13.107 [ms] (mean)
Time per request: 1.311 [ms] (mean, across all concurrent requests)
Transfer rate: 119.94 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 6
Processing: 5 13 4.4 12 46
Waiting: 0 12 4.2 11 46
Total: 5 13 4.4 12 46
Percentage of the requests served within a certain time (ms)
50% 12
66% 14
75% 15
80% 16
90% 19
95% 21
98% 25
99% 28
100% 46 (longest request)
--------------------------- CodeIgniter -------------------------------------------
# ab -t30S -c10 http://ecommercesoftwareinfo.com/frameworkbenchmarks/CodeIgniter/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking ecommercesoftwareinfo.com (be patient)
Completed 5000 requests
Completed 10000 requests
Finished 14048 requests
Server Software: Apache
Server Hostname: ecommercesoftwareinfo.com
Server Port: 80
Document Path: /frameworkbenchmarks/CodeIgniter/
Document Length: 11 bytes
Concurrency Level: 10
Time taken for tests: 30.003 seconds
Complete requests: 14048
Failed requests: 0
Write errors: 0
Total transferred: 2075216 bytes
HTML transferred: 154528 bytes
Requests per second: 468.21 [#/sec] (mean)
Time per request: 21.358 [ms] (mean)
Time per request: 2.136 [ms] (mean, across all concurrent requests)
Transfer rate: 67.54 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 8 21 7.9 20 76
Waiting: 7 19 7.6 18 75
Total: 8 21 7.9 20 76
Percentage of the requests served within a certain time (ms)
50% 20
66% 23
75% 25
80% 27
90% 32
95% 36
98% 42
99% 46
100% 76 (longest request)
-------------------------------- Yii -----------------------------------------------
# ab -t30S -c10 http://ecommercesoftwareinfo.com/frameworkbenchmarks/yii/demos/helloworld/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking ecommercesoftwareinfo.com (be patient)
Completed 5000 requests
Finished 9090 requests
Server Software: Apache
Server Hostname: ecommercesoftwareinfo.com
Server Port: 80
Document Path: /frameworkbenchmarks/yii/demos/helloworld/
Document Length: 11 bytes
Concurrency Level: 10
Time taken for tests: 30.001 seconds
Complete requests: 9090
Failed requests: 0
Write errors: 0
Total transferred: 1463460 bytes
HTML transferred: 99990 bytes
Requests per second: 302.99 [#/sec] (mean)
Time per request: 33.004 [ms] (mean)
Time per request: 3.300 [ms] (mean, across all concurrent requests)
Transfer rate: 47.64 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 4
Processing: 12 33 13.5 31 114
Waiting: 11 31 13.1 29 112
Total: 12 33 13.5 31 114
Percentage of the requests served within a certain time (ms)
50% 31
66% 37
75% 41
80% 44
90% 52
95% 58
98% 66
99% 71
100% 114 (longest request)
------------------------------- Kohana ---------------------------------------------
# ab -t30S -c10 http://ecommercesoftwareinfo.com/frameworkbenchmarks/Kohana/index.php
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking ecommercesoftwareinfo.com (be patient)
Completed 5000 requests
Finished 9045 requests
Server Software: Apache
Server Hostname: ecommercesoftwareinfo.com
Server Port: 80
Document Path: /frameworkbenchmarks/Kohana/index.php
Document Length: 11 bytes
Concurrency Level: 10
Time taken for tests: 30.004 seconds
Complete requests: 9045
Failed requests: 0
Write errors: 0
Total transferred: 1387332 bytes
HTML transferred: 99506 bytes
Requests per second: 301.46 [#/sec] (mean)
Time per request: 33.172 [ms] (mean)
Time per request: 3.317 [ms] (mean, across all concurrent requests)
Transfer rate: 45.15 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.4 0 18
Processing: 12 33 12.9 31 115
Waiting: 7 30 12.2 29 114
Total: 13 33 12.9 31 115
Percentage of the requests served within a certain time (ms)
50% 31
66% 37
75% 41
80% 43
90% 51
95% 57
98% 63
99% 69
100% 115 (longest request)
-------------------------------- CakePHP -------------------------------------
# ab -t30S -c10 http://ecommercesoftwareinfo.com/frameworkbenchmarks/CakePHP/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking ecommercesoftwareinfo.com (be patient)
Finished 4020 requests
Server Software: Apache
Server Hostname: ecommercesoftwareinfo.com
Server Port: 80
Document Path: /frameworkbenchmarks/CakePHP/
Document Length: 11 bytes
Concurrency Level: 10
Time taken for tests: 30.013 seconds
Complete requests: 4020
Failed requests: 0
Write errors: 0
Total transferred: 602180 bytes
HTML transferred: 44220 bytes
Requests per second: 133.94 [#/sec] (mean)
Time per request: 74.659 [ms] (mean)
Time per request: 7.466 [ms] (mean, across all concurrent requests)
Transfer rate: 19.59 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 2
Processing: 27 74 22.3 75 173
Waiting: 25 69 21.7 70 173
Total: 27 74 22.3 75 173
Percentage of the requests served within a certain time (ms)
50% 75
66% 84
75% 89
80% 93
90% 103
95% 110
98% 120
99% 128
100% 173 (longest request)
----------------------------------- Zend Framework ----------------------------------------
# ab -t30S -c10 http://ecommercesoftwareinfo.com/frameworkbenchmarks/ZendFramework/public/
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking ecommercesoftwareinfo.com (be patient)
Finished 2115 requests
Server Software: Apache
Server Hostname: ecommercesoftwareinfo.com
Server Port: 80
Document Path: /frameworkbenchmarks/ZendFramework/public/
Document Length: 11 bytes
Concurrency Level: 10
Time taken for tests: 30.000 seconds
Complete requests: 2115
Failed requests: 0
Write errors: 0
Total transferred: 340914 bytes
HTML transferred: 23287 bytes
Requests per second: 70.50 [#/sec] (mean)
Time per request: 141.846 [ms] (mean)
Time per request: 14.185 [ms] (mean, across all concurrent requests)
Transfer rate: 11.10 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 52 141 39.0 147 251
Waiting: 49 138 38.5 144 251
Total: 52 141 39.0 147 251
Percentage of the requests served within a certain time (ms)
50% 147
66% 161
75% 169
80% 173
90% 187
95% 196
98% 211
99% 220
100% 251 (longest request)
----------------------------------------------------------------------------------
Research for this article was completed November 9, 2012; pricing and other information may change.
Joseph Montanez is a senior web application developer, team manager, and technology analyst expert at Comentum.
Bernard Kohan is a mobile app and web application development and technology analyst expert. He is available to discuss any issues or questions you have about web development and the best choices for your company or project.
Bernard can be reached at
619-990-1212
Contact Us »
Web App Estimator
Select and unselect modules such CMS or eCommerce for your web application and watch the cost update in real time.
Try It »