Prado - vytvorenie a testovanie jednoduchej aplikácie
Prado je PHP 5 framework pracujúci na udalosťami-riadenej architektúre. Najnovšia verzia tohto PHP frameworku je 3.1.7 a priniesla opravu viac
ako 20 chýb a mnoho ďalších vylepšení.
Prado je PHP 5 framework pracujúci na udalosťami-riadenej architektúre. Najnovšia verzia tohto PHP frameworku je 3.1.7 a priniesla opravu viac ako 20 chýb a mnoho ďalších vylepšení. Adresár aplikácie napísanej vo frameworku Prado obsahuje špecifikačný súbor XML, HTML šablónu a triedu PHP. Prado komponenty sú prepojené do jedného celku, aby vytvorili väčšiu časť webovej aplikácie, alebo aj kompletnú stránku. Medzi silné vlastnosti tohto projektu patrí znovupoužitie väčšiny kódu.
Ako prvé si vygenerujeme základ aplikácie pomocou dole uvedeného príkazu, ktorý nám vygeneruje samotný framework Prado.
Ďalší krok je nastavenie spojenia s databázou a tieto nastavenia nájdeme v súbore pradocontact/protected/application.xml . Do sekcie moduls treba pridať modul na pripojenie k databáze. Nasledovný kód treba uložiť do súboru v sekcii moduls.
<?xml version="1.0" encoding="utf-8"?><application id="pradocontact" mode="Debug">
<paths>
<using namespace="Application.database.*" />
</paths>
<!-- configurations for modules -->
<modules>
<module id="db" class="System.Data.TDataSourceConfig"><database ConnectionString="mysql:host=localhost;dbname=diplomovka"
username="root" password="tombo"/>
</module>
<module class="System.Data.ActiveRecord.TActiveRecordConfig" ConnectionID="db" /></modules>
<!-- configuration for available services -->
<services>
<service id="page" class="TPageService" DefaultPage="Home" /></services>
</application>
Následne je potrebné vytvoriť súbor UsersRecord.php v adresári /protected/database. Tento súbor obsluhuje model tabuľky users.
<?php
class UsersRecord extends TActiveRecord {
const TABLE='users';
public $id;public $member_id;
public $name;public $surname;
public $phone;public $email;
public station function finder($className=__CLASS__){
return parent::finder($className);} }
?>
Na obsluhu modelu je potrebné vytvoriť súbor pre controller a to bude súbor home.php, ktorý je umiestnený v adresári /protected/pages/.
<?php
class Home extends TPage {
public function onInit($param) {parent::onInit($param);
// fetches all data account information$this->UserGrid->DataSource=UsersRecord::finder()->findAll();
// binds the data to interface components$this->UserGrid->dataBind();
}
} ?>
Aby boli tieto požiadavky zobrazené podľa žiadanej formy je potrebné vytvoriť súbor home.page v adresári /protected/pages/.
<%@ Title="Users List" %><h1>Users List</h1>
<a href="<%= $this->Service->constructUrl('insert')%>">Create New User</a>
<br/>
<com:TDataGrid ID="UserGrid"
DataKeyField="id"AutoGenerateColumns="false" / >
<com:TBoundColumnHeaderText="ID"
DataField="id" />
<com:TBoundColumn
HeaderText="Member_id"
DataField="member_id" />
<com:TBoundColumn
HeaderText="Name"
DataField="name" />
<com:TBoundColumn
HeaderText="Surname"
DataField="surname" />
<com:TBoundColumn
HeaderText="Phone"
DataField="phone" /><com:TBoundColumn
HeaderText="Email"
DataField="email" />
</com:TDataGrid >
Všetky tieto súbory je potrebné vytvoriť aj pre druhú tabuľku members, aby bola zaručená kompatibilita s už vytvorenými testovacími plánmi. Základ aplikácie pre tabuľku users už je vytvorení a teraz nasleduje nastavenie cesty k testovacej aplikácii a to v súbore /index.php. Tento súbor je dôležitý pre smerovanie a správny chod celej aplikácie.
<?php
$frameworkPath='/var/www/sites/diplomovka.sk/html/framework/prado.php';
// The following directory checks may be removed if performance is required$basePath=dirname(__FILE__);
$assetsPath=$basePath.'/assets';
$runtimePath=$basePath.'/protected/runtime';if(!is_file($frameworkPath))
die("Unable to find prado framework path $frameworkPath.");
if(!is_writable($assetsPath))die("Please make sure that the directory $assetsPath is writable by Web server process.");
if(!is_writable($runtimePath))die("Please make sure that the directory $runtimePath is writable by Web server process.");
require_once($frameworkPath);$application=new TApplication;
$application->run();
?>
Po overení všetkých funkcionalít vytvorenej aplikácie, môže začať testovanie pomocou programu PHP_Depend. Z nameraných výsledkov je vidieť značný posun v rovine abstrakcie, ako u predchádzajúcich frameworkov.
Výsledky namerané pomocou programu JMeter v prehľadnej tabuľke nižšie.
Udalosť |
Vzorky |
Priemer [ms] |
Stredná hodnota [ms] |
Min [ms] |
Max [ms] |
Priepustnosť |
---|---|---|---|---|---|---|
Test č. 1 |
||||||
AddUser |
10 |
1855 |
2255 |
234 |
3005 |
32,2/min |
Users |
10 |
2692 |
3011 |
1926 |
3985 |
22,2/min |
Members |
10 |
3384 |
3339 |
1913 |
5984 |
17,7/min |
EditUser |
10 |
2535 |
2367 |
2015 |
3673 |
23,6/min |
Celkovo |
40 |
2617 |
2454 |
234 |
5984 |
22,9/min |
Test č. 2 |
||||||
AddUser |
10 |
826 |
288 |
236 |
2706 |
1,2/sec |
Users |
10 |
2593 |
2849 |
1982 |
3006 |
23,1/min |
Members |
10 |
2592 |
2980 |
1929 |
3062 |
23,1/min |
EditUser |
10 |
2590 |
2611 |
2075 |
3382 |
23,1min |
Celkovo |
40 |
2150 |
2260 |
236 |
3382 |
27,8/min |
Test č. 3 |
||||||
AddUser |
10 |
705 |
256 |
237 |
2258 |
1,4/sec |
Users |
10 |
2589 |
2930 |
1977 |
3109 |
23,1/min |
Members |
10 |
3000 |
3016 |
1918 |
5123 |
20,0/min |
EditUser |
10 |
2596 |
2988 |
1913 |
3478 |
23,1/min |
Celkovo |
40 |
2222 |
2258 |
237 |
5123 |
26,9/min |