{"id":35801,"date":"2021-08-18T09:31:07","date_gmt":"2021-08-18T06:31:07","guid":{"rendered":"https:\/\/orbitsoft.com\/blog\/?p=35801"},"modified":"2023-06-28T18:05:55","modified_gmt":"2023-06-28T15:05:55","slug":"tasks-we-solve-with-codeigniter","status":"publish","type":"post","link":"https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-codeigniter\/","title":{"rendered":"Tasks we solve with CodeIgniter"},"content":{"rendered":"\n<p><\/p>\n\n\n<div class=\"wp-block-lazyblock-case lazyblock-case-ZXPNpl\"><div class=\"styled-block\">\n  <div class=\"styled-block__main\">\n          <h3 class=\"styled-block__title\">\n        In brief      <\/h3>\n        <ul class=\"case__list\">\n            \n                    <li class=\"case__item\">\n              \n          <span class=\"case__order\">01<\/span>\n          <div class=\"case__body\">\n            <div class=\"case__title\">\n              <span>Kind of tool<\/span>\n            <\/div>\n            <p>CodeIgniter &#8211; PHP Framework<\/p>          <\/div>\n        <\/li>\n            \n                    <li class=\"case__item\">\n              \n          <span class=\"case__order\">02<\/span>\n          <div class=\"case__body\">\n            <div class=\"case__title\">\n              <span>Where it\u2019s used<\/span>\n            <\/div>\n            <p>Large Canadian content provider<\/p>          <\/div>\n        <\/li>\n            \n                    <li class=\"case__item\">\n              \n          <span class=\"case__order\">03<\/span>\n          <div class=\"case__body\">\n            <div class=\"case__title\">\n              <span>Why we chose it<\/span>\n            <\/div>\n            <p>In 2013 it became the most advanced framework, and it still does its job well.<\/p>\n<p>Most functions can be overridden and extended through the use of classes<\/p>\n<p>Console commands enable it to work with other frameworks<\/p>\n<p>Works with .po\/.mo file formats for system localization<\/p>          <\/div>\n        <\/li>\n            \n                    <li class=\"case__item case__item_marked\">\n              \n          <span class=\"case__order\">04<\/span>\n          <div class=\"case__body\">\n            <div class=\"case__title\">\n              <span>Company results<\/span>\n            <\/div>\n            <p>40 million published videos<\/p>\n<p>2 billion ad impressions per month<\/p>\n<p>Support for 30 languages<\/p>\n<p>350 thousand users online every day<\/p>          <\/div>\n        <\/li>\n          <\/ul>\n  <\/div>\n  <\/div><\/div>\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-Z15PM4c\"><h2 class=\"article__h\">350 thousand users online every day at Canadian content provider <\/h2><\/div>\n\n\n<p>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.<\/p>\n\n\n<div class=\"wp-block-lazyblock-steps lazyblock-steps-1Dxhcw\"><div class=\"styled-block\">\n  <div class=\"styled-block__main\">\n          <h3 class=\"styled-block__title\">\n        Service functions      <\/h3>\n        <ul class=\"steps__list\">\n              <li class=\"steps__item\">\n          <div class=\"steps__title\">\n                      <\/div>\n                      <div class=\"steps__description\">\n              Display of different types of advertising: pop-ups, videos, banners            <\/div>\n                            <\/li>\n              <li class=\"steps__item\">\n          <div class=\"steps__title\">\n                      <\/div>\n                      <div class=\"steps__description\">\n              Collection of various statistics on user interaction with videos: views, where they stopped, where they rewound            <\/div>\n                            <\/li>\n              <li class=\"steps__item\">\n          <div class=\"steps__title\">\n                      <\/div>\n                      <div class=\"steps__description\">\n              Data storage            <\/div>\n                            <\/li>\n              <li class=\"steps__item\">\n          <div class=\"steps__title\">\n                      <\/div>\n                      <div class=\"steps__description\">\n              Provide reports            <\/div>\n                            <\/li>\n          <\/ul>\n  <\/div>\n  <\/div><\/div>\n\n\n<p>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.<\/p>\n\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-ZiNC9b\"><h2 class=\"article__h\">Benefits of using CodeIgniter <\/h2><\/div>\n\n\n<p>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.<\/p>\n\n\n\n<p><strong>You can quickly create new entities.<\/strong> For example, for emojis with video content or user profiles.<\/p>\n\n\n<div class=\"wp-block-lazyblock-figure lazyblock-figure-ZyG6dl\"><figure class=\"article__figure  article__figure_no-shadow\">\n        <div class=\"article__figure-img\" >\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/codeigniter1.png\" alt=\"\">\n    <\/div>\n                <figcaption>To create one, just set the correspondence beautiful-url \u2019=>\u2018 my_controller \/ my_method \/ params \u2019. Then, when requesting https: \/\/domain.tld\/beautiful-url, the specified path will be called<\/figcaption>\n    <\/figure><\/div>\n\n\n<p><strong>Protects against sudden service drop for users.<\/strong> Before releasing an updated version of the service for users&#8217; 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 &#8220;into battle&#8221; instead of in a testing environment. In such a case the service for users could crash and cease operating.<\/p>\n\n\n\n<p>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.<\/p>\n\n\n<div class=\"wp-block-lazyblock-figure lazyblock-figure-1Al4oi\"><figure class=\"article__figure  article__figure_no-shadow\">\n        <div class=\"article__figure-img\" >\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/codeigniter2.png\" alt=\"\">\n    <\/div>\n                <figcaption>The command for creating databases is called from a special init package &#8211; actions performed at the stage of system initialization. The name is purely symbolic for convenience.<\/figcaption>\n    <\/figure><\/div>\n\n\n<p><strong>Allows you to add new functions and refine the system. <\/strong>When used correctly, CodeIgniter can compete with more advanced frameworks, perform business tasks, and doesn\u2019t require a lot of resources.<\/p>\n\n\n\n<p>Most of the functions can be overridden, or by using its own classes.<\/p>\n\n\n\n<p>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.<\/p>\n\n\n<div class=\"wp-block-lazyblock-figure lazyblock-figure-u9yvm\"><figure class=\"article__figure  article__figure_no-shadow\">\n        <div class=\"article__figure-img\" >\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/codeigniter3.png\" alt=\"\">\n    <\/div>\n                <figcaption>When the Input library is called, all the functions from the standard library are available to us, as well as new ones.<\/figcaption>\n    <\/figure><\/div>\n\n\n<p>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.<\/p>\n\n\n\n<p><strong>Compatible with popular databases.<\/strong> CodeIgniter allows the system to interact with the MySQL database, Aerospike, Redis, and microservices.<\/p>\n\n\n\n<p>With Phinx, you can commit and roll back database changes without using SQL, and receive a migration report.<\/p>\n\n\n\n<p><strong>Allows you to translate the service into different languages.<\/strong> The service is used in 40 countries, so the developers have given it the ability to translate content into different languages.<\/p>\n\n\n<div class=\"wp-block-lazyblock-figure lazyblock-figure-1QpaEs\"><figure class=\"article__figure  article__figure_no-shadow\">\n        <div class=\"article__figure-img\" >\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/codeigniter4.png\" alt=\"\">\n    <\/div>\n                <figcaption>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.<\/figcaption>\n    <\/figure><\/div>\n\n<div class=\"wp-block-lazyblock-figure lazyblock-figure-ZmUk3\"><figure class=\"article__figure  article__figure_no-shadow\">\n        <div class=\"article__figure-img\" >\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/codeigniter5.png\" alt=\"\">\n    <\/div>\n                <figcaption>Translations are cached. This is what getting the text looks like.<\/figcaption>\n    <\/figure><\/div>\n\n<div class=\"wp-block-lazyblock-heading lazyblock-heading-1lQxng\"><h2 class=\"article__h\">Results of working with CodeIgniter: we\u2019ve been supporting a growing system for over 8 years <\/h2><\/div>\n\n\n<p>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.<\/p>\n\n\n\n<p><strong>The company earns revenue from the service from many different countries.<\/strong> 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.<\/p>\n\n\n\n<p><strong>The service attracts more new users. <\/strong>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.<\/p>\n\n\n<div class=\"wp-block-lazyblock-important-block lazyblock-important-block-Z8LOgA\"><div class=\"important-box\">\n  <div class=\"important-box__main\">\n          <p class=\"important-box__h\">Technical unit<\/p>\n      \t<ul>\n<li>CodeIgniter<\/li>\n<\/ul>\n<p>Programming languages:<\/p>\n<ul>\n<li>PHP<\/li>\n<li>JS<\/li>\n<\/ul>\n<p>Libraries:<\/p>\n<ul>\n<li>jQuery<\/li>\n<li>Zend<\/li>\n<li>NodeJS<\/li>\n<li>Grunt<\/li>\n<\/ul>\n<p>Databases:<\/p>\n<ul>\n<li>MySQL<\/li>\n<li>Aerospike<\/li>\n<li>Redis<\/li>\n<\/ul>  <\/div>\n  <\/div><\/div>\n\n<div class=\"wp-block-lazyblock-banner lazyblock-banner-gojMW\"><div \n  class=\"banner\n   \n  \" \n  >\n    <div class=\"banner__body\">\n        <h2 class=\"banner__h\"> We release projects for online and offline business<\/h2>\n        <div class=\"banner__content\">\n            <p><strong>We work with businesses of any scale.<\/strong> Our clients include international companies, large and medium-sized businesses, and startups.<\/p>\n<p><strong>Telecom<\/strong>: cellular operators, Internet service providers.<\/p>\n<p><strong>Finance<\/strong>: electronic payment systems, insurance companies and brokers.<\/p>\n<p><strong>Retail<\/strong>: stores, trade networks.<\/p>\n<p><strong>Internet advertising<\/strong>: advertising agencies, advertising networks.<\/p>\n<p><strong>Medicine<\/strong>: clinics, medical services.<\/p>        <\/div>\n                            <div \n              class=\"banner__button button js-form-modal\n               button_style_light-on-promo2\">\n              Discuss or order development                          <\/div>\n            <\/div>\n    <div class=\"banner__photo\">\n        <img decoding=\"async\" src=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/friendship.png\" alt=\"\" class=\"banner__img\">\n    <\/div>\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>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. 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 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":35811,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[196],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tasks we solve with CodeIgniter - OrbitSoft Blog<\/title>\n<meta name=\"description\" content=\"In the article we describe why did we chose CodeIgniter for a Canadian entertainment service developing and what the results are\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-codeigniter\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Tasks we solve with CodeIgniter - OrbitSoft Blog\" \/>\n<meta name=\"twitter:description\" content=\"In the article we describe why did we chose CodeIgniter for a Canadian entertainment service developing and what the results are\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/codeigniter-1029x1002-1-768x748-1.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@orbitsoft\" \/>\n<meta name=\"twitter:site\" content=\"@orbitsoft\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tasks we solve with CodeIgniter - OrbitSoft Blog","description":"In the article we describe why did we chose CodeIgniter for a Canadian entertainment service developing and what the results are","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-codeigniter\/","twitter_card":"summary_large_image","twitter_title":"Tasks we solve with CodeIgniter - OrbitSoft Blog","twitter_description":"In the article we describe why did we chose CodeIgniter for a Canadian entertainment service developing and what the results are","twitter_image":"https:\/\/orbitsoft.com\/blog\/wp-content\/uploads\/codeigniter-1029x1002-1-768x748-1.jpg","twitter_creator":"@orbitsoft","twitter_site":"@orbitsoft","twitter_misc":{"Written by":"admin","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-codeigniter\/","url":"https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-codeigniter\/","name":"Tasks we solve with CodeIgniter - OrbitSoft Blog","isPartOf":{"@id":"https:\/\/orbitsoft.com\/blog\/#website"},"datePublished":"2021-08-18T06:31:07+00:00","dateModified":"2023-06-28T15:05:55+00:00","author":{"@id":"https:\/\/orbitsoft.com\/blog\/#\/schema\/person\/e515b3fa91e283750477594c4f028b7b"},"description":"In the article we describe why did we chose CodeIgniter for a Canadian entertainment service developing and what the results are","breadcrumb":{"@id":"https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-codeigniter\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-codeigniter\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/orbitsoft.com\/blog\/tasks-we-solve-with-codeigniter\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/orbitsoft.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tasks we solve with CodeIgniter"}]},{"@type":"WebSite","@id":"https:\/\/orbitsoft.com\/blog\/#website","url":"https:\/\/orbitsoft.com\/blog\/","name":"OrbitSoft Blog","description":"Discover the latest in news and resources for OrbitSoft","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/orbitsoft.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/orbitsoft.com\/blog\/#\/schema\/person\/e515b3fa91e283750477594c4f028b7b","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/orbitsoft.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/b1b269c579caf059f82b6d114c63fc49?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b1b269c579caf059f82b6d114c63fc49?s=96&d=mm&r=g","caption":"admin"},"url":"https:\/\/orbitsoft.com\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/posts\/35801"}],"collection":[{"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/comments?post=35801"}],"version-history":[{"count":15,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/posts\/35801\/revisions"}],"predecessor-version":[{"id":35839,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/posts\/35801\/revisions\/35839"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/media\/35811"}],"wp:attachment":[{"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/media?parent=35801"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/categories?post=35801"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/orbitsoft.com\/blog\/wp-json\/wp\/v2\/tags?post=35801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}