3

I need to develop an app for booking appointments. This is going to be hosted in a shared server. So performance is the most important thing. I have used symfony2. I quite liked the framework. But seems to be heavy.

Which framework would suit me considering my requirements? I have shortlisted three frameworks yii, symfony2 and ZF2. I am not asking which framework is better.

All the three are good frameworks. I want to know which will suit my requirements. My first priority would be performance (I will be using AJAX wherever possible), second would be maintenance and development time and third community support. Or should I use my own handlers to separate views and logic and just use raw php?

gnat
  • 21,442
  • 29
  • 112
  • 288
ravi404
  • 99
  • 1
  • 9
  • 3
    @downvoter care to comment? – ravi404 Dec 19 '12 at 08:03
  • 2
    I didn't downvote, but questions to recommend certain tools or technologies generally get a troubled feedback here. Most of them are off topic anyway. I'm not sure about yours, since you ask only about certain properties. Maybe we should clarify the [FAQ](http://programmers.stackexchange.com/faq) about this kind of question one day. – thorsten müller Dec 19 '12 at 08:44
  • 1
    If you think symfony2 is 'heavy', then ZF and ZF2 are out. I've no experience with Yii, but I found symfony2 relatively intuitive and it was fairly fast to get going and productive with it. Checkout the Symblog tutorials (http://tutorial.symblog.co.uk/) – Anonymous Dec 19 '12 at 09:31
  • (I didn't downvote by the way, just didn't think my comment should qualify as an 'answer') – Anonymous Dec 19 '12 at 09:35
  • @Anonymous i have tried symblog on local machine.. a bit slower than my shopping cart app on raw php.. But that comparison is not fair.. I have almost no experience on symfony2 with bigger projects.. All symfony2 projects are small and were for practice.. – ravi404 Dec 19 '12 at 10:06
  • Doesn't the cost of developing the application dwarf the cost of hosting it on a reasonable server? Unless this is a hobby project where work is considered free. – CodesInChaos Dec 22 '12 at 17:29
  • 2
    Caching is the key. Pick the framework that makes caching the easiest. Wordpress is an example of a great app that handles caching very poorly. So it often doesn't run well on shared hosts. It doesn't matter how fast/slow the framework runs, but how often it has to run. – Reactgular Dec 26 '12 at 04:56

3 Answers3

8

Performance isn't your most important factor. If it was, your app wouldn't be hosted on a single shared server, it would be hosted on a cluster of dedicated servers.

If you want to do the best job you can on this project, then use whichever framework you already understand best. You'll better know how to get good performance out of it because of your experience with it, and that may make up for whatever advantage some other framework has.

It's likely the code you write will have the most impact on performance.

Also, it's likely your app won't see enough traffic for this to really matter. In the event it does, at some point you'll want to move it off of a shared server to a dedicated server, regardless of what framework you use. Eventually you'll be running it on a cluster of servers with a load balancer in front of it, and your challenge will be things like how to shard your database.

Edit: Here are some benchmarks of a variety of PHP frameworks, which include both symfony and yii, and zf1 but not 2.

In that particular benchmark, it looks like symfony2 is faster than yii which is faster than symfony1, which is faster than zend. They're all of course slower than raw html or raw php.

I think choosing a framework based on a benchmark is a bad idea though. Your own code will be doing something different, and perform completely different.

You might find their methodology useful though. You might want to run siege yourself and see how well your site performs, and what difference making various changes makes. (Although if you're on shared hosting, you probably shouldn't run siege against it, you might bring down everyone's site!)

For "maintenance and development time", your familiarity with the framework is probably going to matter more than the framework itself. And your own ability to be productive and write maintainable code is even more important, regardless of framework choice.

Good luck on your project!

Tim
  • 272
  • 2
  • 5
  • i cannot decide the client's budget. As a developer gotta give the best product i can.. – ravi404 Dec 22 '12 at 07:11
  • Tim is kind of right here, is it possible to guarantee performance on shared hosting environment? All performance indicators are influenced on other things happening on the same machine, beyond your application's/account control. – Dimitrios Mistriotis Dec 22 '12 at 10:15
  • @Gorton and @ Tim +1 for your answers.. I'm gonna go with symfony2.. But still i have a feeling if yii would give better performance.. – ravi404 Dec 23 '12 at 11:40
  • 3
    @ravz : if the client values hosting at $5/month or so how much does he value your time? – Wyatt Barnett Dec 24 '12 at 19:05
2

@tim's answers is the best one I think but if you still need to pick a PHP framework, then consider Codeigniter too. It works very well on a shared server, no command line access needed, very good performance and a large active community

Gortron
  • 700
  • 8
  • 15
2

I think YII best meets your requirements since:

  1. it is fast
    http://www.yiiframework.com/performance/ and even more so if you can implement APC which I was able to do on shared hosting provider blue host using the instructions here: http://rk.md/2011/install-apc-accelerator-bluehost-shared-host/ This speed will allow you to stay longer on a shared host before exhausting resources.

  2. Maintenance is simple by pointing the index file to the latest install, with regression equally simple.

  3. Development time is short due to excellent scaffolding provided by the GII module http://www.yiiframework.com/doc/blog/1.1/en/prototype.scaffold

  4. Community support is strong with active forums, wiki and extensions.

With the caveat that if you already know Symfony then that will be easiest for you to use, however that is not one of your stated requirements.

sdjuan
  • 121
  • 2
  • Have you used symfony2.? And the performance benchmark shown in your link is for symfony1 – ravi404 Dec 24 '12 at 13:49
  • No I have not used symfony2 so I can't directly compare. You are right, they are old comparisons. I read claims that symfony2 is faster than YII 1.1.1 (OTOH YII is now at 1.1.12) and has a lot of new features going for it. You seem to be familiar with symfony2 so go with what what you know. In the end, speedwise, it won't make a whole lot of difference. Good luck. – sdjuan Dec 24 '12 at 19:02
  • 1
    Even the folks at YII like symfony2 http://www.yiiframework.com/forum/index.php/topic/10198-symfony-2-faster-then-yii/page__st__20 – sdjuan Dec 24 '12 at 19:18
  • +1).. anyways i will work on yii.. but for my project i'm gonna go with symfony2 – ravi404 Dec 25 '12 at 08:57