Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Will an application on PHP Yii framework with MySQL database handle an ERP solution of 20K employees?

We have got a project to build an ERP system for one of the largest garment industry of Bangladesh.

They have around 20,000 employees and about 10% of them get out/in every month. We are a small company with 5 PHP developers and don't have much experience with such a large project. We have developed different small/medium scale projects previously with Codeigniter/Zend Framework and MySQL database.

For this project we decided to go with Yii framework and MySQL or PostgreSQL. There will be about 1 million database query every day. Now my question is can MySQL/PostgreSQL handle this load or is there a better alternative? Is it ok to do it with Yii framework or there have a better PHP framework for this kind of application? We have got only 5 months to build the payroll and employee management modules.

like image 446
Ali Hasan Imam Avatar asked May 23 '11 10:05

Ali Hasan Imam


People also ask

What is Yii PHP framework?

The Yii[ji:] framework is an open-source PHP framework for rapidly-developing, modern Web applications. It is built around the Model-View-Controller composite pattern. Yii provides secure and professional features to create robust projects rapidly.

Why Yii is the best framework?

It provides many reliable applications like Superb IoC, convenient migration system and Integrated system for module testing. On the other hand, Yii is a high-performance PHP framework that can be used for the fast development of all modern applications. Yii uses MVC architecture and has a simple code.


2 Answers

For one thing, consider using PostgreSQL rather than MySQL. You're going to be dealing with mission-critical data and, in general, you'll appreciate that:

  • You will have access to window functions (useful for reports), with statements, and a much more robust query planner.
  • You will have extra data types, namely geometry types which can be used to optimize date-range overlap related queries.
  • You will have access to full text search functionality without needing to use an engine (MyISAM) which is prone to data corruption.
  • You will have more options to implement DB replication (some of which are built-in).

With respect to scalability, be wary that scalability != performance. The latter is about making individual requests faster; the former is about being able to handle massive quantities of simultaneous requests, and often comes with a slight hit to the latter.

For the PHP framework, I've never used Yii personally, so I do not know how well it scales. But I'm quite certain that Symfony2 (or Symfony, if you're not into using beta software) will scale nicely: its key devs work in a web-agency whose main customers are mid- to large-sized organizations.

like image 139
Denis de Bernardy Avatar answered Sep 27 '22 16:09

Denis de Bernardy


I think, Yii will work fine with (relatively) large amount of data. I'm using Yii to manage 1.3 million records, some thausend updates a day and some thousand querys a day on an small virtual host with an amazing performance.

If your database can handle this data, your Yii application will also handle that.

Your choice of the database will be an important point. So @Denis said some important thinks. By using MySQL probably you have to explore / determined the right storage-engine for your needs.

But, there are some points, which i realized by creating an growing project with Yii. You should think about those things:

-Yii is an young framework: new technologies (like ajax) are supported, but in some special cases it's a bit immature: it's very easy to generate an basic application in a cuple of hours. Problem could be occur by special situation and requirements. Example: they have an nice validation-mechanism for user inputs(HTML Forms). But until Yii 1.1.6 that doesn't work with HTML Checkboxes, since Yii 1.1.7, Checkboxes are supported by default, but no groups of checkboxes. An other problem: Yii alway uses an table alias, which is always "t". That could be a problem! Sometimes you can define that alias, sometimes not (which is inconsistent). If you like to lock a couple of tables in MySql, you ran into a problem, because Yii calls every table with the same alias "t". So you are unable to loot the tables in MySql by tablename and it's also impossible to lock a couple of tables, which called by the same alias. -> those are specific problems, you can solve them, by writing pure PHP (not using Yii functionality) What I'm trying to say: the framework will not be helpful in very case, but in mostly.

-Yii is easy to extend. It's easy to add own extensions or functionality. So lot's of those "small problems" can be solved be writing own extensions, widgets or by overriding methods.

-Yii supports PHP 5.2. Yii is compatible with 5.3 but (Yii runs on 5.3 - i'm still using it since yesterday, it work's) but doesn't support new features from 5.3 (maybe you need one?) PHP5.3 will be (maybe) supported with Yii 2.0 - in a distance future (2012)

-Yii has a small (but very good) community.

-there is no professional support (you can post bugs in hope, anybody will fix it - or you will fix it yourself)

-Yii is OO PHP. Think about that by handling with Data-Objects. It's possible to load large amount of data into Data-objects. But keep in mind, that your application server have enough RAM (but that's not a Yii specific thing)

At all: i like Yii an if your application is not to complex, you will have a lot of fun an an nice and powerful application at the end.

like image 43
The Bndr Avatar answered Sep 27 '22 17:09

The Bndr