Reputation: 15269
I'm in progress with developing my new website with Codeigniter
framework. The key is that, I'd like to have most things to be configurable in my admin panel.
I haven't got much experience about storing the data, so which way its going to be better: PHP configuration files or MySQL table?
There will be pretty a high amount of configurations, so I would like to access it as fast as possible: for example with the MVC's model , but none said I can't do the same with the helper (for the PHP configuration files) ... So it all depends on which way its going to be: accessable faster, better to update. In my opinion, MySQL will be a better choice for this, since all I need there is just a little query - but I would first listen to your opinions guys, as most of you have a great experience related to this kind of stuff.
Upvotes: 0
Views: 445
Reputation: 1583
codeigniter has a proper configuration mechanism. You can put all configurations in application/config/config.php file, codeigniter framework makes sure to provide them to your code in most efficient manner.
Configurations should be placed in database if you feel that they will be managed by users/admin in future eg. site name etc. Else remember that every trip to database has a cost. You can cover that cost by caching the values but go for your custom configuration solution if you really need it.
Upvotes: 2
Reputation: 5701
I think it's going to depend on how your applications is configured. How many instances will you be running (for scale out) and how often you expect values to change.
A big pro is having a consistent master for configuration data across all of your instances. Change it in one place and all of your instances get it. This can also be changed during runtime versus having to redeploy your application. The con is the extra complexity of fetching configuration data from the database (not to mention setting up a server for this in the first place) and it's another point of failure.
On the other hand, having a configuration file is much easier and that might be appropriate if you don't need to change values very frequently or only have a single server. The downside comes when you have multiple servers, it becomes a pain to deploying and managing configuration files on tens or hundreds of servers.
Upvotes: 3
Reputation: 103
Using a MySQL database is definitely the way to go for storing flexible pieces of data. Plus, Codeigniter's active record library (http://codeigniter.com/user_guide/database/active_record.html) makes it much easier to deal with MySQL databases, plus it sanitizes your queries for you. If you only need to store a couple pieces of data, a PHP config file would be a acceptable solution, but if you are building an admin panel, definitely go with a MySQL database.
Upvotes: 2
Reputation: 224904
It depends - do you need a user interface for it? If you do, store it in a database. Otherwise, definitely store it in a PHP configuration file. The advantages there are:
If you are making some kind of administration panel for the settings, though, you'll want to store it in a database, because updating PHP configuration files in PHP is usually difficult and a bad idea.
Upvotes: 3