Tasks we solve with CodeIgniter

Using the example of a large Canadian content provider

Tasks we solve with CodeIgniter

In brief

  • 01
    Kind of tool

    CodeIgniter — PHP Framework

  • 02
    Where it’s used

    Large Canadian content provider

  • 03
    Why we chose it

    In 2013 it became the most advanced framework, and it still does its job well.

    Most functions can be overridden and extended through the use of classes

    Console commands enable it to work with other frameworks

    Works with .po/.mo file formats for system localization

  • 04
    Company results

    40 million published videos

    2 billion ad impressions per month

    Support for 30 languages

    350 thousand users online every day

350 thousand users online every day at Canadian content provider

Our customer is the largest content provider in Canada. One of their projects is an entertainment service: more than 40 million published videos and 350 thousand online users every day.

Service functions

  • Display of different types of advertising: pop-ups, videos, banners
  • Collection of various statistics on user interaction with videos: views, where they stopped, where they rewound
  • Data storage
  • Provide reports

With the help of an advertising agency, the service receives income from ad impressions. As of mid-2021, there are generating more than 2 billion ad impressions per month.

Benefits of using CodeIgniter

To develop the service, we chose the CodeIgniter framework, which became popular in 2013. At the time, it was the only framework capable of handling project tasks. In 2021, we continue to maintain the codebase on CodeIgniter, although we have reduced the scope of its application i.e., using it for operations with user panels. It would be senseless to stop using the framework as it still manages its tasks very well.

You can quickly create new entities. For example, for emojis with video content or user profiles.

To create one, just set the correspondence beautiful-url '=>‘ my_controller / my_method / params '. Then, when requesting https: //domain.tld/beautiful-url, the specified path will be called

Protects against sudden service drop for users. Before releasing an updated version of the service for users' computers, our developers test it in a specialized environment. This negates the possibility that a developer could make a mistake and accidentally release an unfinished version of the service «into battle» instead of in a testing environment. In such a case the service for users could crash and cease operating.

There is a phing utility in CodeIgniter: it generates system settings depending on the environment, and eliminates the error of incorrect launch. For example, you can create several parameters of different types for the environment, where addresses will be specified for connecting to the Database, Aerospike, and Redis. By choosing an environment, you can quickly generate the necessary configuration files based on a template, instead of manually entering all the data.

The command for creating databases is called from a special init package — actions performed at the stage of system initialization. The name is purely symbolic for convenience.

Allows you to add new functions and refine the system. When used correctly, CodeIgniter can compete with more advanced frameworks, perform business tasks, and doesn’t require a lot of resources.

Most of the functions can be overridden, or by using its own classes.

For example, there is a base class CI_Input, which is responsible for data received from the user, such as requests to download files. The MY_Input class from CI_Input has been added with new filtering rules and methods.

When the Input library is called, all the functions from the standard library are available to us, as well as new ones.

This is where user data is processed and errors are displayed. In the overridden class, the method is extended and checks not only the data, but also the method of their presentation.

Compatible with popular databases. CodeIgniter allows the system to interact with the MySQL database, Aerospike, Redis, and microservices.

With Phinx, you can commit and roll back database changes without using SQL, and receive a migration report.

Allows you to translate the service into different languages. The service is used in 40 countries, so the developers have given it the ability to translate content into different languages.

This is how the initialization of translations looks like. They are stored in .po/.mo files: the former store the source code, and the latter store their binary data. Poedit is normally used for editing.
Translations are cached. This is what getting the text looks like.

Results of working with CodeIgniter: we’ve been supporting a growing system for over 8 years

OrbitSoft started working on the project in 2013. Since that time the load on the system has grown tenfold. The system works, and continues to evolve, as we continue to support and refine it.

The company earns revenue from the service from many different countries. The service is localized into 30 languages. More than 350 thousand users from different countries turn to it every day. CodeIgniter helps us output translations of text from repositories.

The service attracts more new users. Users can rank videos according to their preferences, with the service able to display content based on personal recommendations. The CodeIgniter framework is used to work with custom panels.

Technical unit

  • CodeIgniter

Programming languages:

  • PHP
  • JS


  • jQuery
  • Zend
  • NodeJS
  • Grunt


  • MySQL
  • Aerospike
  • Redis

Whatever your needs, we can help!

Tell us what problems you’re facing with your business. We look forward to hearing from you.

Получите ответ по смс

Ваше сообщение успешно отправлено!
Представьтесь пожалуйста
Укажите номер, на который придет ответ
Нажимая на кнопку, вы даете согласие
на обработку персональных данных.