Tasks we solve with CodeIgniter

Using the example of a large Canadian content provider

OrbitSoft
4 min readAug 18, 2021

In brief:

Kind of tool

  • CodeIgniter — PHP Framework

Where it’s used

  • Large Canadian content provider

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

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

Libraries:

  • jQuery
  • Zend
  • NodeJS
  • Grunt

Databases:

  • MySQL
  • Aerospike
  • Redis

Get a free consultation

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response