logo

CodeIgniter - vytvorenie a testovanie jednoduchej aplikácie

 

CodeIgniter

       Tento malý a výkonný framework vychádza z PHP verzie 4.1 a
je plne funkčný aj na PHP 5, avšak nevyužíva žiadny z prínosov
tejto verzie.
Verzia frameworku postavená na PHP 5 je už vo vývoji.


        Prvá verzia tohto frameworku bola vydaná v roku 2006 a poslednú stabilnú verziu 1.7.2 vydala v roku 2009 spoločnosť EllisLab za podpory širokej internetovej komunity. Tento malý a výkonný framework vychádza z PHP verzie 4.1 a je plne funkčný aj na PHP 5, avšak nevyužíva žiadny z prínosov tejto verzie. Verzia frameworku postavená na PHP 5 je už vo vývoji. Silnou stránkou tohto projektu je veľmi prehľadne spracovaná dokumentácia, ktorá umožňuje rýchle oboznámenie sa s frameworkom, a vyčerpávajúce množstvo informácií. Tento framework po nainštalovaní obsahuje 26 rôznych knižníc a každá z nich reprezentuje jednu zo základných funkcií. Framework je vhodný na menšie a výkonnejšie webové aplikácie pri ktorých je jeho prednosťou rýchlosť.

aplikácia

             Ako prvú je treba správne nakonfigurovať adresu URL, na ktorej sa daná aplikácia nachádza, a to v konfiguračnom súbore, ktorý sa nachádza v adresári system/appliction/config/config.php .

 $config['base_url'] = "http://cakephp.getfreehosting.co.uk/"; 

 

              Ďalším krokom je spojenie s databázou, ktoré sa nakonfiguruje v súbore umiestnenom v adresári system/appliction/config/database.php .

 $active_group = "default"; 
$active_record = TRUE;
$db['default']['hostname'] = "adresa servera";
 $db['default']['username'] = "username";
$db['default']['password'] = "heslo";
 $db['default']['database'] = "meno databazy";
 $db['default']['dbdriver'] = "mysql";
 $db['default']['dbprefix'] = "";
 $db['default']['pconnect'] = TRUE;
 $db['default']['db_debug'] = TRUE;
 $db['default']['cache_on'] = FALSE;
 $db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
 $db['default']['dbcollat'] = "utf8_general_ci"; 

 

           Pre správnu funkčnosť databázového pripojenia je nutné ešte poupraviť jeden súbor a to v adresári system/appliction/config/autoload.php, ktorý nám pri spustení načíta nevyhnutnú knižnicu database.

 $autoload['libraries'] = array('database'); 

 

           Aby táto aplikácia pracovala, tak ako má, je nutné ešte nastaviť nové presmerovanie, ktoré sa uskutoční pri prvej návšteve stránky. Súbor routes.php obsahuj adresár system/application/config/ a v tomto súbore treba upraviť presmerovanie na chcený controller.

$route['default_controller'] = "members";

 

                 Teraz je aplikácia nakonfigurovaná a je potrebné vytvoriť súbory pre model, view, controller. Ako prvý sa vytvorí súbor membersmodel.php pre tabuľku members v adresári system/application/models/.

 <?  

class MembersModel extends Model {

 var $table_record_count;
var $id; var $name;
 var $street_number;
 var $street;
 var $town;
  var $ZIP_code;
 var $type;
 var $login;
 var $password;


function MembersModel() {

parent::Model();
 $this->obj =& get_instance();


$this->_init_Members();

}

 function add( $data ) {


// Load the database library $this->load->database();

// Build up the SQL query string
// $sql = $this->db->insert_string('members', $data);


$query = $this->db->query($sql);

return $this->db->insert_id();
}


function modify($keyvalue, $data) {

// Load the database library $this->load->database();

// Build up the SQL query string $where = "id = $keyvalue";
// $sql = $this->db->update_string('members', $data, $where);


$query = $this->db->query($sql);
}
 }
 ?>

 

                   Ďalším krokom je vytvorenie súboru members.php v adresári system/application/controllers/, ktorý bude slúžiť na obsluhu všetkých požiadaviek užívateľov na informácie z tabuľky members. Pri výpise všetkých záznamov z tabuľky je použité stránkovanie, ktoré zobrazí len daný počet záznamov na jednu stránku a zvyšok rozdelí do ďalších strán.

<?php 

if (!defined('BASEPATH')) exit('No direct script access allowed');


class Members extends Controller {

function Members() { parent::Controller(); }


function index() { $this->browse(); }

function browse() {

$start = $this->uri->segment(3,0);

 $limit_per_page = 10;


$this->load->model('membersmodel');

// Instantiate the model

$the_results['members_list'] = $this->membersmodel->findAll($start, $limit_per_page);

 // Send the retrievelist msg


$this->load->library('pagination');
 $this->load->helper('url');

$config['base_url'] = site_url('members/showall/');

  // or just /members/

 $config['total_rows'] = $this->membersmodel->table_record_count;
 $config['per_page'] = $limit_per_page;


$this->pagination->initialize($config);

$the_results['page_links'] = $this->pagination->create_links();

$this->load->library('layout');

$this->layout->render_page('/members/membersgrid', $the_results);
 
}


$this->load->helper('url');

$submit = $this->input->post('Submit');

if ( $submit != false ) {

$this->load->model('membersmodel');


$data = $this->_get_form_values();


$this->membersmodel->add($data);


redirect('/members/', 'location');
 

} else {

 $data = $this->_clear_form();
$data['action'] = 'add';

$this->load->library('layout');
 $this->layout->render_page('/members/membersdetails', $data);
 }
}
...

 

               Do tretice je ešte potrebné napísať kód aj pre súbor membersdetails.php, ktorý sa nachádza v adresári systems/application/views/members/... a má na starosti formátovanie výstupných informácií.

<?  
$this->load->helper('url');
 $action_url = site_url() . "/members/$action/";

?>

<h2>Enter members Details</h2>


<form name="membersdetails" id="membersdetails" method="POST" action="<?= $action_url; ?>">
 
<input type='hidden' name='id' id='id' value='<?= $id; ?>' >
 
<table cellspacing="2" cellpadding="2" border="0" width="100%">

<tr valign='top' height='20'>

  <td align='right'>
<b> id: </b> </td>
  <td> <?= $id; ?> </td>
 </tr>

  <tr valign='top' height='20'>

 <td align='right'>
 <b> name: </b> </td>
<td> <input type='text' name='name' id='name' value='<?= $name; ?>' />
 </td>
</tr>

<tr valign='top' height='20'>

 <td align='right'>
 <b> street_number: </b>
 </td>
<td> <input type='text' name='street_number' id='street_number' value='<?= $street_number; ?>' />
 </td>
 </tr>

<tr valign='top' height='20'>

 <td align='right'> <b> street: </b> </td>
 <td> <input type='text' name='street' id='street' value='<?= $street; ?>' />
 </td>
 </tr>

 <tr valign='top' height='20'>

<td align='right'> <b> town: </b> </td>
 <td> <input type='text' name='town' id='town' value='<?= $town; ?>' />
 </td>
 </tr>

 <tr valign='top' height='20'>

 <td align='right'> <b> ZIP_code: </b> </td>

<td> <input type='text' name='ZIP_code' id='ZIP_code' value='<?= $ZIP_code; ?>' />
 </td>
</tr>

  <tr valign='top' height='20'>

 <td align='right'> <b> type: </b> </td>
 <td> <input type='text' name='type' id='type' value='<?= $type; ?>' />
</td>
</tr>

<tr valign='top' height='20'>

 <td align='right'> <b> login: </b> </td>
 <td> <input type='text' name='login' id='login' value='<?= $login; ?>' />
 </td>
</tr>

 <tr valign='top' height='20'>

 <td align='right'> <b> password: </b> </td>
 <td> <input type='password' name='password' id='password' value='<?= $password; ?>' />
 </td>
 </tr>
 

</table>

<input type="submit" name="Submit" value="Save">
 <input type="reset" name="resetForm" value="Clear Form">


</form>

 

              Podobné súbory je potrebné vytvoriť aj pre tabuľku users. Adresa umiestnenia tejto aplikácie bude rovnaká, ako pri prvom frameworku a aj databáza sa použije z minulého testovania. Je tak možné zopakovať predchádzajúce testy a podmienky, ako pri prvom frameworku.

 

              Výsledky z testovania frameworku CodeIgniter pomocou aplikácie PHP_Depend sú prehľadne zobrazené v nasledujúcich obrázkoch.

 

Codeigniter výsledky

 

Codeigniter výsledky

                Po overení funkčnosti aplikácie umiestnenej na serveri môže začať testovanie pomocou Jmeter, ktorého nastavenia je možné použiť z predchádzajúceho testovania. Jediná vec, ktorú treba upraviť, je niekoľko vstupných údajov, ktoré sa ukladajú do tabuľky, aby bolo jasne vidieť fungovanie testovania. 


Udalosť Vzorky Priemer [ms] Stredná hodnota [ms] Min [ms] Max [ms] Priepustnosť
Test č. 1
AddUser 10 2174 2181 1147 2998 27,4/min
Users 10 1932 1976 437 3114 30,8/min
Members 10 759 334 203 2651 1,3/sec
EditUser 10 799 345 210 2684 1,2/sec
Celkovo 40 1416 1566 203 3114 42,0/min
Test č. 2
AddUser 10 2450 2546 1315 3440 26,1/min
Users 10 1799 1966 505 3100 34,2/min
Members 10 1188 1625 204 2666 1,3/sec
EditUser 10 829 3341 332 2649 27,8/min
Celkovo 40 1566 1778 204 3440 34,3/min
Test č. 3
AddUser 10 3981 4981 1354 5635 15,0/min
Users 10 2341 2584 504 2995 25,4/min
Members 10 1544 1969 329 3005 38,6/min
EditUser 10 1805 1967 330 3158 33,1/min
Celkovo 40 2418 2335 329 5635 24,7/min


Codeigniter výsledky

zdrojový kód aplikácie   >>   na stiahnutie




                             

logo