#13, Август'2005 :: Спецвыпуск: Материалы 4-ой...

194
PHP::SOAP и XForms на АвтоВАЗ-е Современные технологии эффективной разработки веб-приложений с использованием PHP Киев, Май 2005 MySQL: репликация и кластер издается с февраля 2004 года, www.phpinside.ru 2005 13 Июнь-Июль '05

Upload: vital-b

Post on 02-Feb-2016

237 views

Category:

Documents


0 download

DESCRIPTION

Две стороны документирования: phpDocumentor и DocBook Разработка современной CMS. Преимущества которые дает PHP MySQL – просто о сложном Оптимизация PostgreSQL Построение поисковых систем.Принципы и реализация Доклад по целесообразности тестирования XML Sapiens как универсальная концепция сайтостроения в разрезе XML/PHP Поддержка нескольких СУБД в проекте PHP::SOAP и Xforms Платежные системы – это не страшно

TRANSCRIPT

  • PHP::SOAP XForms -

    - PHP

    , 2005

    MySQL:

    2004 , www.phpinside.ru

    2005

    No 13- '05

  • PHP Inside 13

    .................................. 5 : phpDocumentor DocBook..................................................14 CMS. PHP 5.......................................24 MySQL ........................................................................................................ 37 PostgreSQL.............................................................................................................48 . ........................................................60 ...............................................................................68 XML Sapiens XML/PHP................. 77 XML PHP 5................................................................................................................................. 88 ....................................................................................95 PHP::SOAP Xforms.................................................................................................................. 104 ..................................................................................... 133 TDD ....................................................................................................157 TDD .................................................................................. 172

    .

    " -- PHP" -.

    , - , -, . PHPInside - - "as is".

    , - : ? , - , 13- , , - ( - - ). , , , , [admin], [Lenka], - [young] .

    PHPInside ...! ! , , , - ( - admin'a)..

    2

    [nw]

  • PHP Inside 13

    - ( Lenke). . , - "PHP Inside" -, PHPClub'.

    , , PHPClub' http://party.phpclub.net/search.php

    - - - , .

    , - . : . -, 18, 211, . +380 44 230 47 77, .

    , PHPClub':http://phpclub.ru/talk/showthread.php?s=&threadid=67108&rand=59 .

    syfisher: ! : -, . , - . - -. .

    : . - , . AWWCMS, - LIMB (, :-)).

    : ( 5) . - .

    , -, 3-, . TDD , . , .

    , -, , ( -) - .

    Fiva: - , - . , -, .

    kdk: . - . - 2-3 , 2-3 ... !!! - , - !!!

    3

    ()

    [nw] [rammstein]

    http://phpinside.ru [email protected]

  • PHP Inside 13

    voituk: ( ) "TDD !". ( ) XFroms+SOAP.

    P.S. - - .

    young: php :)

    mariroz: - ! - , -. , , , (, ) . , , . , , .

    : ). - AWWCMS siteMETA. , ., , , , -, () .

    : ; .

    , -. - .

    Yur@: , . , . , -- ... - 5, . .. , , (.. , -).

    . - , 1 ( MySQL), ( - ).

    . - 45 , - !!! . - CMS, ""... , . - , , , -.

    screjet: ! - , .

  • PHP Inside 13

    Linux. , . - Open Source . . Open Source?

    Open Source Software ( )

    -, - (public domain), - "" - ,, GNU General Public License (GPL). , , , , - . , . (., Apache FreeBSD) .

    , , - "" , . - "" , , .

    - . , , , .

    Open Source?, Open Source -

    , . - - . Open Source . - - ( ), . - - , . - . - . , .

    5

    :

  • PHP Inside 13

    , -

    Open Source . : , , ..

    , , -

    Open Source, - , , , , . - , e-mail. ,.. OpenSource.

    . - , . - online , - .. .

    OpenSource . - Sourceforge Freshmeat. -, - , Sourceforge . 1,1 100 000 , 11 000 - , PHP. - (, , ) . , , - , , Bug-track, CVS, , - , , , - , .. -.

    , - Open Source - PHPClasses. - , - . , , - . , ( , , Zend Studio).

    , , , , , / . - , .

    -

    , .. , , , .

    6

  • PHP Inside 13

    -: / ( , - - , ..).

    , , .. , - , , , .. - , .

    - phpDocumentor. " :PHPdocumentor DocBook".

    -: , - e-mail. , - , - .

    (GPL, LGPL, BSD) -

    , .. - , .

    . PHP Open Source - : GPL, LGPL BSD.

    GPL BSD .

    GPL BSD

    ,

    LGPL. - : , , -, .

    7

  • PHP Inside 13

    BSD. , - : -. , Open Source, FreeSoftware, - . - - 22 1999.

    2001. BSD - Intel "BSD+Patent License". , , Intel.

    LGPL, BSD GPL. GPL , , - GPL , GPL, . - .

    LGPL GPL, GPL , . LGPL , , -, , , . - - LGPL.

    CVS (Concurrent Versions System)

    : , , , ( ) - . CVS - Open Source. GNUGPL.

    CVS -: - () , - , ( check-out), (check-in). - , - , - . Unix ( CVS- Windows NT), CVS -.

    8

  • PHP Inside 13

    , . - Open Source , OpenBSD. , - ; - check-in, , .

    CVS . -, (branch), , , - .

    , www.sourceforge.net, CVS ( , SSH).

    -

    , ,, .. . , - (, ), . , - ( ), , -, ( ).

    , ( ), - , . . -, . - , .

    , , - , - , . (, ) - , -.

    , . , - - MySQL.

    1. .

  • PHP Inside 13

    mysql_select_db($dbn, $d) or die("ERROR2");$rs=mysql_query("SELECT * FROM table");if(!$rs) die ("ERROR3");$nr = mysql_num_rows($rs);while($r=mysql_fetch_row($rs)) {$ar[]=$r;}print "";for($i=0; $i

    2. .

    "", .

    10

  • PHP Inside 13

    PHP Open Source - . , . ?

    -, - , , , .. , - . - , - .

    . - . - ( , , , ),.., , . , , .

    , . -, . - , (- , , Open Source , ).

    , --

    , .. - .

    . , . - , , http://www.hotscripts.com. - - . , . , - . , , , , .

    . , "". . - , -- . , Open Source . , .

    11

  • PHP Inside 13

    -

    . - . - , . , -, : -, , -, - , -, -, - - .

    . : - MySQL -- phpMyAdmin , OpenSource CMS All-in-One - (,Denwer-2).

    . . , . . - -, , - - .

    -

    , . , , ? , - , - , - . - , , , .

    - , , . - , , , .- , Open Source - . , , , , -. , TODO-list . -- ( , - ), . - .

    , , -

    , - ( , ).

    12

  • PHP Inside 13

    , , , - , , , . : , , .

    Open Source . Sourceforge.net , - PayPal (.. Donations). WebMoney ..

    - - . , - + . , . , , , .

    , , , . -, , -, .

    :

    http://www.opensource.org/advocacy/faq.php

    http://www.libertarium.ru/libertarium/18586

    http://www.sourceforge.net

    http://www.freshmeat.net

    http://ru.wikipedia.org

    13

  • PHP Inside 13 : PHPdocumentor DocBook

    :PHPdocumentor DocBook

    : PHPdocumentor.

    : - ( , API - XP). . , , , - :PHPdocumentor - ( PHPdoc).

    JavaDoc PHPdoc :

    JavaDoc [1.1]. JavaDoc - Java. - ( API) . JavaDoc , - , - .

    PEAR::PHPdoc : -

    ( open source ), PHPdocumentor JavaDoc. PEAR::PHPdoc, - PHPdocumentor, PEAR. , -, , -.

    PHPdoc ( JavaDoc) : -

    . , : . (docblocks):/** * Description goes here * @author `lovchy` * @version 1.0 stable*/

    foo

    14

    : [lovchy] DeltaInform, OSS-, PHP

  • PHP Inside 13 : PHPdocumentor DocBook

    JavaDoc. . @ , . , @ . PHPdoc -: , .

    PHP , -

    , . , , , - .. , , -. . - (, , -, , ).

    ( ) -:

    @author . , .

    @category, @package - . PEAR, .

    : @version, @see, @todo,

    /** * File docblock * @version 1.0 Prima * @todo Implement foobar */

    PHP PHPdoc, ,

    : - . , PHP - , , ( ).

    :@param $

    [] - :@param $,

    15

  • PHP Inside 13 : PHPdocumentor DocBook

    @return

    , - . PHPdoc : . , .

    PHPdoc :

    - 1

    - 2

    - 3,

    . ,PHPdoc : , , ,

    - . ( )./** * Foobar * * This function does foobar this way: * $foo = foobar(true); * * @param bool $baz Baz * @return integer Foobar value */function foobar($baz) { return rand(); }

    (, -

    , ) -. , (@author, @since, ).

    . PHPdoc PHP5

    .

    : . PHP4, - , PHPdoc - (final) : @final @abstract. , @access.

    16

  • PHP Inside 13 : PHPdocumentor DocBook

    , , @access private, ( - ). , API .

    @access - , . , , - .

    , , @var, , , - . , @var, mixed.

    PHP5 PHPdoc 1.3.0. @final @abstract : . - : RC3.

    , - . - ( , @access @var ), PHPdoc - . :/**#@+ * @access private */

    :/**#@-*/

    , -, @access private.

    /** * Foobarer * @uses Bar */class Foo{ /** * @var bool Marks if lifes good */ public $LifesGood = true;}

    .

    17

  • PHP Inside 13 : PHPdocumentor DocBook

    PHPdocumentor .

    , , API. , OpenSource. , , GPL, , . -, .

    , PHP PHPdoc -. PHPdoc - IDE Zend, . ( , -, CMS) . - PHPdoc TESmarty.

    Open Source, PEAR. PHPdoc, - , . , PHPdoc , .

    . PHPdoc

    (tutorials). - , , ( ) -, , . - DocBook. .

    . PHPdoc ( 1.2.0) DocBook, - . - , . - inline tags.

    : DocBook. -

    , -, . , - . , .

    ; XML; -

    XML. DocBook, -, DTD, . . , XML DocBook- , .

    18

  • PHP Inside 13 : PHPdocumentor DocBook

    , DocBook SGML. DocBook , , RTF PDF , XML . , . , , -.

    DocBook - -, . OReilly, -, .

    DTD DocBook, , -

    XML. XML DocBook. , DocBook - XML- :

    DTD DocBook, , .

    ( ):

    My First Book JaneDoe 1998Jane Doe

    Foreword ... ... ... ... ... ... ...

    .

    : . N - 1 5, -. - , -. . DocBook, , , - . , . . - [2.2], - [2.1].

    19

  • PHP Inside 13 : PHPdocumentor DocBook

    XML vs. SGMLDocBook, , -

    XML, SGML. , . , -. - . - DSSSL XSLT. , , -.

    Entities: , , XML

    entities ( -). - , . entities - . XML , &foo;. - . - :

    ]>My First Book&second_chapter;&second_chapter;&conclusion;

    [2.1].

    : DSSSL XSLT , -

    DocBook XML-DTD SGML- . .

    DSSSL [2.4] (Document Style Semantics and SpecificationLanguage) SGML, LISP. DSSSL- Jade.

    XSLT [2.5] (Extensible Stylesheet Language Transformation) - XSLT.

    20

  • PHP Inside 13 : PHPdocumentor DocBook

    DocBook, , - . [2.3] DSSSL, XSLT. , DSSSL XML-, - XML-DTD .

    ; DocBook CVS PHPXML , , , -

    , CVS ( ).

    CVSCVS [2.6] -

    , , , - . () diff . , , ( ), - . , , e-mail, - diff .

    GNU-Autotools,

    XML . UNIX - GNU-Autotools, - PHP. Open-Source - , - - , : -. , - , GNU-Autotools . DocBook:

    configure XSLTproc ( Jade / - ) , - ;

    make test DTD, - ;

    make format : format.

    PHP.

    - : - .

    21

  • PHP Inside 13 : PHPdocumentor DocBook

    - . : - , , Autoconf.

    manual.xml.

    :

    %language-defs;%language-snippets;

    , - , , XML, - .

    , -, .

    ,

    , -, . PHP , , .

    , -, . entities .

    xml- :&bookinfo; &preface; &GettingStarted; &chapters.intro; &chapters.tutorial; &InstallAndConfigure; &install.intro; &install.unix.index;

    22

  • PHP Inside 13 : PHPdocumentor DocBook

    &install.macos.index; &install.windows.index; &install.problems; &install.ini;

    DocBook, , , , PHP - .

    Livedocs , , -

    HTML ( ) . -, . PHP Livedocs, DocBook-, .

    -, . Livedocs - PHP 3.0, , - .

    1.1 JavaDoc Tool Homepage, Sun MS.

    http://java.sun.com/products/jdk/javadoc/

    1.2 PHPDocumentor Manual, http://manual.phpdoc.org/http://phpdoc.org/

    1.3 PEAR::PHPdoc http://pear.php.net/package/PHPDoc

    1.4 , ? . (PHPinside #8, 11.04)

    2.1 DocBook: The definitive guide, N. Wellsh, L. Muellner(OReilly, 1999-05): http://www.docbook.org/tdg/en/html/docbook.html

    2.2 DocBook PHPc Tutorial, A. Wormus, B. Bezrukov

    http://boris.bezrukov.info/Other/PHPconf.ru_4/DocBook.Tutorial.html

    2.3 DocBook demystification HOW-TO, E. Raymond

    http://en.tldp.org/HOWTO/DocBook-Demystification-HOWTO/

    2.4 Complete XML+XSL DocBook Guide, B. Stayton (2002-05)

    http://www.sagehill.net/docbookxsl/index.html

    2.5 Livedocs repository, http://cvs.php.net/livedocs/

    23

  • PHP Inside 13 CMS.

    CMS. , PHP5

    CMS : - , - , CMS, , , - .

    -

    PHP ( ). - , . , .

    - , -. - PHP. - - - . - , , . - , PHP. - Smarty.

    , - . - : - (HTML), .

    , .. , , . - , - .

    - UNIX. -:

    /var/group/petrov/math/mark/etc/tables/max_rows/usr/site1/templates/right_row

    24

    : , -, "AWWSOFT" , "AWWSOFT" .,

  • PHP Inside 13 , PHP5

    , . , "" . (, , ).

    - , -. , - , , .. , , .

    -. : /etc/current_date , , - , .

    , , . :

  • PHP Inside 13 , PHP5

    , - . - . -, - , ( ).

    CMS. -

    - CMS. , CMS, :

    - , , - .

    - - , - - .

    - - - . , - -, - - ..

    .

    CMSCMS, ,

    , , . - :

    26

  • PHP Inside 13 , PHP5

    , . : ,CSV, XML ..; , - .

    CMS

    , . , "","", "", " " ..

    CMS

    CMS, "-", "", " " .. , CMS . , -, . , , - , . "" - , , - , , -, (,"", "", "")

    , - , . , - , .

    ,

    , CMS. - : .

    CMS .

    27

  • PHP Inside 13 , PHP5

    .

    PHP ( ). - , $GLOBALS .

    CMS - , - , . , -, .

    - . , - - CMS.

    CMS , - : (-) - .

    , .. , - - . , - , . , - , .

    . - .

    - , , .. CMS .

    , , - .

    o

    o

    PHP

    PHP

    /

    28

  • PHP Inside 13 , PHP5

    -

    SELECT- -

    ...

    CMS

    o CMS

    o CMS

    CMS

    CMS

    o

    o CMS

    o CMS

    o CMS

    o CMS

    o CMS

    (AWWRoot) , -

    CMS. .

    29

  • PHP Inside 13 , PHP5

    (AWWModule) AWW , -

    .

    (AWWProcessor)

    . - , , , - ..

    - ( ) . - .

    (AWWExtencion)

    aww -.

    , - . . .

    CMS , , , .. - CMS-.

    , - , , ""," " .., , - (" - ", " " ..).

    MS (CMSComponent)

    CMS ( ), "" "-". , , - . - .

    CMS, " CMS" - , - .

    .

    30

  • PHP Inside 13 , PHP5

    CMS. - CMS. ,

    - . , , , , , -, , , -, , . - - , 2-3 - .

    , - , - - HTML.

    , -, , - . CMF. , , - , - ( ).

    . - 4 : , ( ), - ( ).

    :

    - , HTML . -, - , , , , .

    - .

    - - .

    .

    , .. - . - CMS - HTML , - . : "", "", "", "" .

    , - (. - CMS CMSDataModule). , .

    31

  • PHP Inside 13 , PHP5

    -:

    "header" ( :, , ), , , , .

    , .

    CMS (CMSModule), ,

    . , -, - .

    CMS (CMSDataModule)

    , - - .

    - - . - . - (: ). , - - .

    . - - HTML, WAP, ,XML .

    CMS (CMSInlineModule) , -

    , .

    32

  • PHP Inside 13 , PHP5

    - , , .

    : . , , , , - .

    , , - . , "-" , .

    .

    . , , . CMS , . .

    , , , , - , , , .. , CMS , . -, , -.

    CMS . , , PHP ( , ), , (-----PHP).

    , PHP5 PHP4. (. 3.3.)

    - . , , , , , .

    33

  • PHP Inside 13 , PHP5

    CMS , , - , - .

    CMS, ,

    . -, , - (- ).

    , , - . , , - .

    PHP. , - PHP , - "SELECT * FROM node WHERE parent=..." . - .

    , - .

    - . - , , - , , - .., .

    , - , , , , - .

    - :

    , , , -. .

    34

  • PHP Inside 13 , PHP5

    .

    .

    PHP5

    - ,PHP5 . , , , . , - PHP, AWW CMS.

    CMS ,

    , - (). - .

    __autoload() CMS ,

    . - . , , ( ).

    __autoload() . , - , , . - , , - , , .

    CMS , -

    . - - (, - , ).

    PHP5 . , , HTML. - , -.

    35

  • PHP Inside 13 , PHP5

    -__METHOD__, .

    , PHP4 PHP5 - , , PHP5 -.

    , CMS

    PHP5. CMS , , .

    AWW CMS -, , , , - .

    36

  • PHP Inside 13 MySQL -

    MySQL - -

    - mySQL. - mySQL- - . , - , .

    (Master)

    (Slave) . Master- SQL- . Slave- - Master-, .

    MySQL, 3.23.15, - : , (Master) , - . , , .

    .

    , :

    mySQL, -

    . , Master-, -, Dialup-. - mySQL, - . mySQL . , - .

    , (SELECT)

    , (INSERT/UPDATE/DELETE), . - ( , ) - - .

    37

    :

  • PHP Inside 13 MySQL -

    -

    . - , .

    . - db.example.com, , IP-. Master- Slave- Master- . , Master-- , . Master- , - , Slave-.

    3.23.26, -

    (A->B->->A), - ""

    (A->B->A). log-slave-updates ( - ) - .

    , , - ( ) , , . : - , , - - - , .

    - AUTO_INCREMENT, -, Master- , . , (A->B->A) , - my_primary_key. , ? , , - my_primary_key, . - - . : , .

    - . :

    CREATE TABLE orders ( server_id INTEGER UNSIGNED NOT NULL, record_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, stuff VARCHAR(255) NOT NULL,

    38

  • PHP Inside 13 MySQL -

    UNIQUE ukey (server_id, record_id));

    insert into orders values (1, NULL, 'testing');insert into orders values (1, NULL, 'testing');insert into orders values (2, NULL, 'testing');

    :mysql> select * from orders;+-----------+-----------+---------+| server_id | record_id | stuff |+-----------+-----------+---------+| 1 | 1 | testing || 1 | 2 | testing || 2 | 1 | testing |+-----------+-----------+---------+

    :

    myISAM--.

    , , - (alter table).

    ID , - . , --, , - , - :

    show variables like 'server_id';

    , , , , - . ? , , - , , .

    ? -

    . - :

    / .

    - ? ? ?

    39

  • PHP Inside 13 MySQL -

    , - :

    - 90%, - 10%

    - 1200 , - 600 . - , .

    .

    :reads = 1200 - 2 * writes ( 1)

    , - :

    reads = 9 * writes / (N + 1) ( - 90%, N - )

    , - :

    2.

    1, / -:

    40

  • PHP Inside 13 MySQL -

    2, - :

    Master-

    , "" Slave- . - --skip-innodb, --skip-bdb myISAM .

    --low-priority-updates, -delay-key-write=ALL , , Slave-.

    -:

    41

  • PHP Inside 13 MySQL -

    :

    "" Slave-, - , , , .

    , , LOAD DATA INFILE, 4.0. 3.x , . , - , Slave- - . , LOAD DATA LOCALINFILE , , .

    . , . - - , . , , , , - , - .

    . , - production - :

    INSERT INTO production.sales SELECT * FROM staging.sales

    - -.

    MySQL-MySQL- - , -

    ( 99,99%). ? - , , . , , - Salve-. , Master Slave . - . , , ( ). , , - .

    , - (, , - , ). , - .

    (- ) .

    42

  • PHP Inside 13 MySQL -

    MGM (Management) Node. , - . , , - . , . - - . MGM- , , ndb_mgmd.

    DB Node (Network Data Base Node, Storage Node). , -. ( , ) . , , , - (), - . ndbd.

    MySQL Server (SQL Node). MySQL-, - NDB- . - . - SQL-. - mysqld -ndbcluster.

    43

  • PHP Inside 13 MySQL -

    .

    - . . , - NDBCLUSTER. , mySQL- 'TYPE=MyISAM' 'TYPE=NDBCLUSTER'. ? MyISAM/InnoDB , MySQL- - . , , SQL-. NDBCLUSTER- SQL-.

    ? - :

    , , - , - 6 -, 4 - ( - ). , - "ERROR 1114: The table'my_cluster_table' is full", - . - 48. - 63.

    -. . -. ( ) - .

    SQL- - :

    . , , , . - , NDB SQL .

    . - . NDB SQL .

    44

  • PHP Inside 13 MySQL -

    . , , . SQL- - . mySQL 5.0 : , SQL- , . . , --engine-condition-pushdown. 5-10 .

    . , SQL- , .

    -.

    - mySQL AB - :

    10 000 - ;

    100 000 - .

    Jeremy Zawodny - 72- ( ):

    380 000

    1,5

    :

    MySQL- - . NDB- .

    NDB-, , . .

    . ( ) - .

    45

  • PHP Inside 13 MySQL -

    SQL- - . SQL- - ( ).

    , , -, (, , ).

    ? , ( , ), , . , "" , - .

    , :

    .

    . - . ( ) , - .

    . , - (- ). - . , 15 , , - 15- .

    : - ( ), - , ( ).

    : - , , - , . - . :

    * BACKUP-..ctl

    * BACKUP--0..data

    * BACKUP-..log

    , :

    :)

    46

  • PHP Inside 13 MySQL -

    FULLTEXT-.

    .

    .

    (foreign keys).

    ( mySQL 5.0 ).

    . , - VARCHAR(255), - 256 , , - .

    SQL- -, myISAM / innoDB .

    NDB- 48.

    63.

    -.

    * http://dev.mysql.com/doc/mysql/en/replication.html,

    * "High Performance MySQL", Derek J. Balling,Jeremy Zawodny, O'Reilly

    * http://dev.mysql.com/doc/mysql/en/ndbcluster.html,

    * http://www.mysql.com/products/cluster/faq.html, MySQLCluster FAQ

    * http://www.mysql.com/it-resources/white-papers/cluster.php, AGuide to High Availability Clustering

    * http://www.mysql.com/it-resources/white-papers/cluster-technical.php, MySQL Cluster Architecture Overview

    * http://jeremy.zawodny.com/blog/, Jeremy Zawodny

    47

  • PHP Inside 13 PostgreSQL

    PostgreSQL - , -

    --. "", - -. , , - - .

    1. PostgreSQL 1: PostgreSQL

    PostgreSQL . , - , - , .

    , . , - , - . , , "".

    PostgreSQL -: ( - ) , - , ( fsync ).

    - : - .

    48

    :

  • PHP Inside 13 PostgreSQL

    - , , (. 2.2.1).

    PostgreSQL . , - , - . -, - , .

    ( - PostgreSQL) :

    , , -, , ( );

    ( UPDATE DELETE) ( / ), .

    , PostgreSQL VACUUM (- 3.1).

    2 . ,

    . postgresql.conf - .

    2.1

    2.1.1 : shared_buffers -

    , , .

    shared_buffers postgresql.conf. - 8. PostgreSQL (7.4 8.0) , .

    : PostgreSQL , (. 2.1.4), .

    :

    : 4 (512)

    256-512 : 16-32 (2048- 4096)

    49

  • PHP Inside 13 PostgreSQL

    1-4 : 64-256 (8192-32768). 256 -.

    2.1.2 : sort_mem1 , -

    . , - ( ).

    - , . , - .

    sort_mem postgresql.conf. - 1 . - 1024. 2-4% .

    2.1.3 : vacuum_mem2 , -

    : VACUUM, CREATE INDEX .. , vacuum_mem -.

    vacuum_mem postgresql.conf. - 1 . - 8192.

    2.1.4 : effective_cache_size PostgreSQL -

    , . -, - , - .

    effective_cache_size postgresql.conf. - 8 . 1000. - 25-50% (.. - ) .

    2.2. -

    , , .

    2.2.1 , -

    3.

    50

  • PHP Inside 13 PostgreSQL

    - - .

    (checkpoint_segments). 16 , . 2*checkpoint_segments+1 -.

    , , - .

    2.2.2 wal_sync_method , -

    . . , - ( -, ).

    wal_buffers ( 8 , 8 ) , - . - . 256-512 , .

    commit_delay ( , 0 )

    commit_siblings (5 ) - .

    - commit_siblings , commit_delay. , , . , "" .

    2.3. Free Space Map: VACUUM FULL VACUUM (

    7.2 ) - , , , -, . :

    max_fsm_relations - , - .

    max_fsm_pages - , - . - , 6 .

    51

  • PHP Inside 13 PostgreSQL

    FSM, VACUUM , - VACUUM FULL, - .

    max_fsm_relations . - max_fsm_pages , (UPDATE DELETE) VACUUM.

    2.4 PostgreSQL - -

    , - . -, true/false:

    stats_start_collector - . - , , .

    stats_reset_on_server_start - - . - .

    stats_command_string - - -. . -, - , -, .

    stats_row_level, stats_block_level - . - .

    , , . - , : , - (. 4.2).

    2.5

    2.5.1 ,

    .

    , - , , - , .

    :

    (!).

    52

  • PHP Inside 13 PostgreSQL

    pg_xlog, , .

    .

    .

    2.5.2 PostgreSQL 8.0: (tablespace) 8.0 PostgreSQL

    , , .

    , .. -, . : , , , - .

    3.

    . ( cron) .

    3.1 VACUUM " " .

    7.2, :

    VACUUM FULL (VACUUM 7.2) , , , - . .

    VACUUM ( 7.2) , , (. 2.3). - , , - , , - , -.

    VACUUM - .

    VACUUM [FULL] ANALYZE -, . - .

    VACUUMANALYZE ( ). (, -, ) .

    53

  • PHP Inside 13 PostgreSQL

    : " " , - VACUUM - .

    3.2 ANALYZE

    . .

    VACUUMANALYZE. , - , , - ANALYZE. - .

    3.3 pg_autovacuum 7.4, PostgreSQL -

    pg_autovacuum, VACUUM /ANALYZE . (. 2.4) stats_row_level.

    - VACUUM ANALYZE. , pg_autovacuum - , - .

    3.4 REINDEX VACUUM FULL REINDEX -

    .

    ;

    .

    . , , . 7.4PostgreSQL , .

    - , REINDEX. : REINDEX, VACUUM FULL, - , , .

    VACUUM FULL .

    54

  • PHP Inside 13 PostgreSQL

    4.

    2: PostgreSQL

    SQL : , , . :

    ;

    ;

    .

    , : .

    2 , PostgreSQL .

    PostgreSQL , . - " ". , ANALYZE( ).

    55

  • PHP Inside 13 PostgreSQL

    4.1. : EXPLAIN EXPLAIN ANALYZE ,

    ( , , -). , - , -, , . , - .

    EXPLAIN . , , , - ( "").

    : - - , , , - . - , (,) - .

    EXPLAIN ANALYZE : ( , " "), . - .

    , - .

    4.1.1. Seq Scan - . (

    ) - - .

    Index Scan - .

    , . ( , , ), . , , , - , , - , .

    4.1.2. Sort - . ,

    ORDER BY , , - - . .

    Hash - - , - Hash Join.

    56

  • PHP Inside 13 PostgreSQL

    4.1.3. Nested Loop . -

    , - .

    Merge Join - .

    Hash Join -. Nested Loop, , - -.

    Merge Join Hash Join, , -, Nested Loop, - .

    4.1.4. ,

    PostgreSQL . - , ( , ). ,

    SET enable_seqscan=false; ,

    , , - . - EXPLAIN [ANALYZE]. postgresql.conf - , - !

    4.2 (. 2.4) -

    . - :

    pg_stat_database - - - , -, .

    , , - - . , , , - ( 2.1.1).

    pg_stat_user_tables - - - , - , , , . - , .

    57

  • PHP Inside 13 PostgreSQL

    VACUUM ANALYZE, - pg_autovacuum - .

    pg_stat_user_indexes - - - , , , - ( , , - , - REINDEX).

    pg_statio_user_tables - - , - , , - (. 2.1.1), - , , TOAST.

    ,

    ( - ).

    . , , , , - PRIMARY KEY UNIQUE.

    .

    "" , , .

    5. PostgreSQL -

    : - , .

    , - , - PostgreSQL. , postgresql-performance, - .

    [1] PostgreSQL documentation, http://www.postgresql.org/docs/ [2] Momjian B., et. al. PostgreSQL FAQ, http://www.postgresql.org/docs/faqs.FAQ.html [3] Momjian B. PostgreSQL Hardware Performance Tuning,http://www.ca.postgresql.org/docs/momjian/hw\s\do6(p)erformance/ [4] Berkus J., Daithankar S. Tuning PostgreSQL for performance,http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html [5] Berkus J. Annotated postgresql.conf and Global User Configuration (GUC) Guide,http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated\s\do6(c)onf\s\do6(e).html [6] Trout J. PostgreSQL: Features, Installation, Administration and Optimization,

    58

  • PHP Inside 13 PostgreSQL

    http://postgres.jefftrout.com/ [7] Elein Mustain A. Interpreting pg_stat Views, http://www.varlena.com/varlena/GeneralBits/107.php [8] Mullane G. S. Efficient SQL: OSCON 2003 presentation, http://www.gtsm.com/oscon2003/toc.html[9] Conway N. Inside the PostgreSQL Query Optimizer, http://neilc.treehou.se/optimizer.pdf

    1. 8.0 work_mem

    2. 8.0 maintenance_work_mem

    3. " " " ". checkpoint_warning (): , .

    59

  • PHP Inside 13 .

    .

    , ... .

    , - . -, , crawler, spider , Googlebot, . - , , . () - - , - - .

    , - , "" - - , , . . -.

    . ,

    . javascript-, , javascript, .

    robots.txt ,

    http://www.robotstxt.org. robots.txt , - - .

    HTTP, ,

    Content-Type: text/html; Charset=windows-1251

    , , - .

    60

    : , "" http://meta.ua ,

  • PHP Inside 13 .

    , , 95% -

    , . HTTP :Date: Thu, 12 May 2005 12:55:44 GMT

    , - - .

    - .

    1: , . - . .

    2: , , - , -, , , , . - , - " ".

    3: , - . , -, - 100-150 .

    , , - , , - ( ) - , . , , (,,..), (,,, ). , ,, TITLE, .

    - .

    , , ., / , - .

    61

  • PHP Inside 13 .

    , .

    - , -. , , - . , , -.

    , , - 1.5 , - -. , 50% - . -. , - "" - - , . , Microsoft Indexing Service - .

    . , 1-2K , - . , , (-, , ).

    . - . - , , . , .

    , 30-100 . , 2-3 , - . - , .

    62

  • PHP Inside 13 .

    ( siteMETA www.sitemeta.com )

    siteMETA - - -. siteMETA -: , - - .

    Linux, FreeBSD Win32 -. siteMETA - .

    - , -. siteMETA , - (). , . - , - . - . - .

    - - siteMETA. - . - ; , , . -, , .

    - . , , , .

    siteMETA - , - . - , , - , - : , , ..

    siteMETA . administrator/root, - .

    Win32 IIS 5.0-6.0 -.

    63

  • PHP Inside 13 .

    siteMETA Linux FreeBSD . siteMETA (, /usr/local/). /usr/local/siteMETA/www/ -, - CGI- ( - cgi-bin), (usr/local/siteMETA/bin/mssSvrs -pid:{ pid } -start). --.

    siteMETA - . :

    - ( url url , );

    ;

    ( - , - ).

    - mssCgi . html-, -, . - xml-, - - XML -.

    siteMETA , PHP XML

    Windows, Linux Apache. XML, . PHP- cgi- - siteMETA, - , ( XML).

    ( - -).

    PHP-, , -

    , cgi- GET-.

    64

  • PHP Inside 13 .

    :mssCgi.exe?q=query&site=xml

    mssCgi.exe - cgi- - siteMETA

    q - , urlencode()

    site - .

    GET-

    cgi-, xml php-.

    php cgi -:$answer="";$fp = fsockopen ("searchserver.dom", 80, $errno, $errstr, 30);if (!$fp) {echo "$errstr ($errno)\n";} else {fputs ($fp, "GET /cgi-bin/mssCgi.exe?q=nokia&site=xml HTTP/1.0\r\nHost: mysite.com\r\n\r\n");while (!feof($fp)) {$answer.= fgets ($fp,128);}fclose ($fp);}

    $answer - xml.

    11661661

    1313235170item 20315530.0047521

    2689

    Russian21695

    Nokia HS-2R]]>

    551 WIN 0

    65

  • PHP Inside 13 .

    cgi-siteMETA ( ) . C - - Windows - , Linux.

    , xml -

    , DOM- php domxml. - xml, - .

    domxml_open_mem($xmldump), $xmldump - , .

    - , .

    , - :

    $elements = $dom->get_elements_by_tagname("grpcount");$element = $elements[0];$count=$element->get_content(); , quote :$elements = $dom->get_elements_by_tagname("quote");for($i=0;$ifirst_child();while($child) {// if($child->node_type() == XML_ELEMENT_NODE)

    {$varname=str_replace(".","_",$child->node_name());unset($$varname);$$varname=iconv("UTF-8","windows-1251",$child->get_content());

    }$child = $child->next_sibling();}

    echo $category_id,$item_modid,$name,$description;}

    -. - , - .

    66

  • PHP Inside 13 .

    COM Windows php-

    . php Windows, COM-.

    COM-, - siteMETA, - regsvr32./* */$factory = new COM("MIISInt.SFactory.1") or die("Unable to initialize search");/* , */$rep=$factory->CreateReport;/* */$rep->clipSize=20;/* */$rep->strQuery=$q;/* */$rep->first=$first;

    - $rep->ProcessQueryAt("localhost:18181);

    , , - .

    $rep->docFoundCount -

    $rep->groupCount -

    $doc=$rep->Group($i) - , - , .

    $doc-> quote // $doc(0)->title // $doc(0)->lang // $doc(0)->size //$url = $doc(0)->Url(0) //

    - siteMETA .

    67

  • PHP Inside 13

    , - . , . - - , . -, -. - , . , , - , , - .

    . -

    , - . , - , , - . - . , 2 :

    (unit-), - ( ) , . - , ( - , ). - ( , ) .

    , " ". . ( ) , . - , .

    , . , " ", b2b, . , - , . - . - .

    68

    :

  • PHP Inside 13

    , , , - . -, , , , .

    2 - TDD, .

    TDD, , . , , . , - . - .

    , - . - , . - "-" , - . - , , .

    , - - - . , - . , - , - , TDD , - .

    , -

    . , - , , . - , , .

    -

    .

    , . - - .

    , -.

    69

  • PHP Inside 13

    - , -.

    ,

    . - , , , . , -, , .

    . , , - . - , - , .

    , , -

    . -. , . , , , , , - - .

    API, . , , API, .. , , , - .

    , . , . - , .

    . , -, (singletons), . , - , - .

    , - , . , . - , , .

    70

  • PHP Inside 13

    . - , . , - , .

    - -

    , -, . - . -, , -. , - . , . , , , , , .

    TDD - " -", " ", "-".

    , , - "" . - , . , - .

    . ,

    , .

    - , .

    , - . , , . , . , , . , . .

    , , . , -.

    71

  • PHP Inside 13

    ?

    , - . , - . , -, , - ..

    , ,

    , . ( , - ) - , - .

    , . - , - . -. , , , . - - , - , .

    , . - - , - . , , , -. , .

    , ,

    2 :

    .

    .

    , - .

    , - - . - , , .. , , . - - , . , .

    72

  • PHP Inside 13

    - - , . , - "".

    - -. , , , , . , - , . .

    . , , , - , .. , . - , , - -.

    , , , , ?

    , -

    , . - , , . -. . -.

    , , - , , . , TDD: , , , , , .. , , , - .

    -, - , . -. , , . - , -, . , , - , -. , .

    , - . .

    73

  • PHP Inside 13

    , - . - , , . - - . , , - .

    , , , , , . , , .

    , , .. -

    , xUnit, (mock objects) . - . - , . , , . . .

    - . -, , -, "" .

    . - . . , - , .... , ?

    - , -

    , - . , . ... . - ? , . , - , .

    , - , -, . , .

    -, - -. -, , , . - .

    74

  • PHP Inside 13

    , , . , - , -, . ,- , , - , , UML. , , , , . - .

    -, , . - , . , . , ? , - , , , - - . - . - , , -, . , , . .

    . TDD - . , -, , , , - , , .. - - - , .

    "" . , , -, , - . - - , - , - .

    , TDD . - , --. "" , - . . , " ", .

    75

  • PHP Inside 13

    - , . - , , .

    - " - ".

    76

  • PHP Inside 13 XML Sapiens

    XML Sapiens XML/PHP

    - (). ? -- ( -, ) , , , - , -- , . .. . , - , UML-. - : -, ?. Windows, GUI , - .Net Frame WorkClass Library Win32 API. - . , - . , Microsoft, - (build-once, deploy n-times)?

    - Windows Forms, Win32 API, MFC?

    - , UIML (www.uiml.org). - .

    XAML + .Net - Longhorn XUL + Java-script/Python/C++ Gecko- . - Macromedia.

    Flex (Rich InternetApplications). , PHP GTK (http://gtk.php.net) GUI-, -.

    XML Sapiens

    77

    : (www.cmsdevelopment.com), RedGraphic Systems(www.redgraphic.com)

  • PHP Inside 13 XML Sapiens

    , - (, , drag&drop ..) - . UIML -. - . -, , .

    PHP , SMARTY (http://smarty.php.net), - -. W3CXSL XML .

    1. , , -

    XML XSLT XSL. , .

    , . XSL , - . .. , - . XAML, XUL MXML (Flex) - XSL , .

    78

  • PHP Inside 13 XML Sapiens

    1. XSLT- -

    UIML, , XSL. UIML - -, -. --, .

    . - , -. -, , - . , - CMS, , .

    , - CMS XML Sapiens. .

    CMS XOOPS2, TYPO3, Mambo? PHP HTML, SMARTY. ?

    ;

    ;

    ;

    .

    79

  • PHP Inside 13 XML Sapiens

    ? - . , - . , -- -. . . - . , .

    :

    , ;

    ;

    ;

    ;

    .

    , XML Sapiens

    , . - , - , . , - (. . 2):

    -, ;

    , ;

    , .

    , , . XML Sapiens :

    (QC) :

    ( SRC);

    , .

    (SDC) , .

    (DDC) , ( , ..), . -, , - XML Sapiens. DDC?

    80

  • PHP Inside 13 XML Sapiens

    2.

    2. DDC -

    81

  • PHP Inside 13 XML Sapiens

    3. UML DDC -

    , - XML Sapiens , - . , CMS . - , UML.

    82

  • PHP Inside 13 XML Sapiens

    (W3C RDF,http://www.w3.org/2001/sw/).

    , , , XML-- . , XSL, , , . XSL . XSL . XML Sapiens ?

    SourceForge XML Sapiens (http://sapiprocessor.sourgeforge.net). - XML-- , XSLT- -. - . XML Sapiens - XML Sapiens, . XSLT- -.

    3. XML Sapiens data1 data2

    4. XML Sapiens interface.sapi

    83

  • PHP Inside 13 XML Sapiens

    5. XML data1 data2 /intro/ Introduction /chapter1/ Chapter 1 /chapter2/ Chapter 2 Content]]>

    4. -

    XML Sapiens PHP : -

    XML Sapiens ?. - ? , XML Sapiens - - - XML Sapiens. ?

    84

  • PHP Inside 13 XML Sapiens

    5. XML Sapiens

    85

  • PHP Inside 13 XML Sapiens

    , XML Sapiens - . . XMLSapiens , - XML Sapiens. PHP , - PRCE. - .

    MVC CMS XML Sapiens CMS, XML Sapiens,

    .

    6. MVC CMS XMLSapiens

    CMS, -. - (DDC/QC) - XML Sapiens. .

    XML Sapiens

    ;

    XML Sapiens , CMS;

    XML Sapiens , ;

    86

  • PHP Inside 13 XML Sapiens

    XML Sapiens ;

    XML Sapiens .

    XML Sapiens , --

    -. -, CMS. - .

    :

    * : http://xmlsapiens.org * : http://xmlsapiens.org/lib/ * : http://xmlsapiens.org/board/ * : http://cms-forum.ru/index.php?showforum=29 * : http://groups.yahoo.com/group/xmlsapiens/ * CMS XML Sapiens: http://sapid.sourgeforge.net/ * XML Sapiens: http://sapiprocessor.sourgeforge.net/

    : 1987 . -

    1998 50 . 2001 - . - , - MyPRESS, - MySITE (www.cmsmysite.com), - Site Sapiens (www.sitesapiens.ru). - CMS XMLSapiens (www.xmlsapiens.org).

    87

  • PHP Inside 13 XML PHP 5

    XML PHP 5

    PHP XML PHP , - XML SAX. PHP XML DOM-, DOMXML W3C DOM [1]. XML XSL [2], - , , .

    XML PHP5 PHP XML

    . , XML - Libxml2 [3].

    . -, - , Linux, Unix, Windows, MacOS X, OS/2 . --, W3C, XML, XML, XPath, Xpointer,Xinclude, Relax NG, XML Schemas, DOM2, SAX. , XML. - PHP, W3C - PHP. Libxml2 . PHP5 :

    1. DOM , XML- DOM API, - W3C.

    2. SimpleXML , XML - .

    3. XMLReader , - XML. SAX, - XMLReader XML.

    XMLReader API Libxml2.

    4. XMLWriter , XML. XMLWriter API Libxml2.

    5. SOAP , SOAP- SOAP PHP.

    88

    : [DAN], , "". "PHP & XML-" PHPClub.ru

  • PHP Inside 13 XML PHP 5

    6. XSL , XSL- XML.

    - .

    DOM -

    XML-. API,, [1], , -, DOM-. DOM PHP5 -. , / . - PHP. PHP DOM, -, , DOM.

    XPath DOM- . PHP5.1 DOMXPath evaluate(). XPath , - DOMNodeList. , , - query().

    - XML xinclude(), DOM.

    - XML-, .

    XMLSchema, RelaxNG, DTD -, Libxml2 HTML ( wellformed) DOM.

    - DOM , SimpleXML XSLT.

    SimpleXML -

    PHP. . ( ) XML [4], - .

    89

  • PHP Inside 13 XML PHP 5

    , , , XML - . , , . - . XML- Zend Engine2 - . XPath , SimpleXMLElement, .

    XMLReader , -

    SAX XML-. XmlTextReader, - Libxml2 - pull. , SAX, - (push),XMLReader - (pull) , - . , SAX,XMLReader , - . , , XML.

    PHP5.1 PECL [5] PHP, - XML.

    XMLWriter XML -

    , - . , -. PHP fwrite(), - , .

    , , - PECL, - .

    XML PHP5.1 -

    , Libxml2. libxml_* , . - .

    90

  • PHP Inside 13 XML PHP 5

    XSL

    Libxslt, Libxml2, - XSL- XML XSL. - DOMXML . - PHP XSL -. - XSL PHP.

    XSLT XSL -

    XML. XSL XML- . XSLT [2] , - XML.

    PHP5 XML XSL. , - . XSL XSL, , , PHP XSL. XSL - , PHP , -. , - . XSL, PHP. , PHP. , PHP5.1. pureXSL PHP. .

    XSL - xinclude() DOMDocument. - setParameter() XSLTProcessor.

    - . , - XSLT gettext.

    91

  • PHP Inside 13 XML PHP 5

    PEAR PECL XMLXML -

    PEAR PECL. , - XMLWriter PECL.

    PEAR -, , :

    XML_XUL , - XUL MozillaOrganization. Gecko. intranet - .

    XML_MXML , Macromedia Flex. - XUL .

    , - (XML_SVG, XML_RSS ..) (XML_fo2pdf, XML_sql2xml,XML_svg2image).

    , PEAR - XML, , , PHP XML.

    SOAP PHP5 SOAP -

    SOAP, . - - . web - (RPC), - web, WDSL. - (,), (, ). - PHP - web. , - , web. web web - SOAP. WDSL SOAP Framework php, .

    92

  • PHP Inside 13 XML PHP 5

    XML -

    - XML. XML -, . , , XML- , (-, ), - , . , XML . , .

    . , PostgreSQL-7.4.2 - XML, XPath XML, .

    [6] MySQL-5.0, - XPath XML, - . , SQLExtractValue(xml, xpath) UpdateXML(xml, xpath, value). - MySQL.

    , - XML(MSSQL, Oracle). - XML -- .

    , - XML, XML .

    ? PHP,

    XML, , - XML PHP - . - - web, - - RPC SOAP, - - XUL, XForms.

    93

  • PHP Inside 13 XML PHP 5

    1. Document Object Model Level 1

    ( http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/ )

    2. XSL Transformations (XSLT) ( http://www.w3.org/TR/xslt )

    3. The XML C parser and toolkit of Gnome (http://xmlsoft.org/ )

    4. SimpleXML, Sterling Hughes (http://www.zend.com/php5/articles/php5-simplexml.php )

    5. PECL (http://pecl.php.net/ )

    6. XML/XPath Support In MySQL5.x, Alexander Barkov. April,2005

    ( http://mysql.r18.ru/~bar/myxml/XMLXpathSupportInMySQL.pdf )

    94

  • PHP Inside 13

    , . -

    .

    1.

    ADODB PEAR::DBMySQL + +

    PostgreSQL + +Microsoft SQL Server + +

    Oracle + +DB2 + +

    Sybase + +Interbase/Firebird + +

    SQLite + +

    - :

    , -;

    ;

    , ;

    ;

    - INSERT/UPDATE ;

    ;

    - ;

    -.

    2. ,

    ADODB PEAR::DB (LIMIT, TOP) + +

    Fetch Modes + + COUNT + -

    + +OUTER JOIN- (LEFT, RIGHT) + +

    95

    : [ForJest], .. ,

  • PHP Inside 13

    ADODB PEAR::DB ID + +

    (prepared) + + Stored Procedures + -

    Placeholders + + + -

    + - + -

    INSERT/UPDATE + - INSERT/UPDATE + -

    + -+/- / + -

    : + -: + -

    : / + -: + -

    96

  • PHP Inside 13

    3.

    SQLMySQL SELECT * FROM my_table ORDER BY id LIMIT 10, 20;MS SQL Server SELECT TOP 30 * from my_table ORDER BY id;

    10 .

    SELECT * FROM (

    SELECT TOP 20 * FROM (

    SELECT TOP 30 * FROM my_table ORDER BY id ASC

    ) ORDER BY id DESC)

    ORDER BY id ASC;

    ADODB $db-> SelectLimit('SELECT * FROM my_table ORDER BY id, 20, 10);

    97

  • PHP Inside 13

    4. ,

    SQLMySQL $mysql_query = SELECT t1.*

    FROM my_table t1

    LEFT JOIN another_table ON t1.id = t2.id_my_table

    WHERE t2.id IS NULL;

    MS SQL Server $mssql_query = SELECT t1.*

    FROM my_table t1

    WHERE t1.id NOT IN

    (SELECT id_my_table FROM another_table);ADODB $db->leftOuter LEFT JOIN IfNull, ,

    , , , .

    1. LEFT JOIN, MySQL, MSSQL .

    2. IN(), MSSQL, MySQL .

    switch ($db->databaseType) {

    case 'mysql':

    $sql =$mysql_query; break;

    case 'mssql:

    $sql = $mssql_query; break;

    default: die(Unsupported DB type);

    }

    $db-> Execute($sql)

    $mysql_query $mssql_query .

    - .

    , - - .

    switch, case.

    , switch case, - 3- . , . - :switch ($db->databaseType) {

    case '':{

    98

  • PHP Inside 13

    ; $sql = ; ; } default: die(Unsupported DB type);}$db-> Execute($sql);;return $results;

    switch ($db->databaseType) {

    case 'mysql':{

    $Handler = &new MySQLHandler($db);$results = $Handler -> do_operation($param1, $param2, $param3)}

    case 'mssql':{

    $Handler = &new MSSQLHandler($db);$results = $Handler -> do_operation($param1, $param2, $param3)} default: die(Unsupported DB type);}return ($results);

    switch case:switch ($db->databaseType) {

    case 'mysql':{

    $Handler = &new MySQLHandler($db); }

    case 'mssql':{

    $Handler = &new MSSQLHandler($db); } default: die(Unsupported DB type);}$results = $Hanlder-> do_operation($param1, $params2, $param3);

    .. , - .function &create_handler($type){switch ($type) {

    case 'mysql':{

    return new MySQLHandler($this-> db);}

    case 'mssql':{

    return new MSSQLHandler($this-> db);}

    99

  • PHP Inside 13

    default: die(Unsupported DB type);}}$Factory = new DBHandlerFactory($db);$Handler = &$Factory-> create_handler($db-> databaseType);$results = $Hanlder-> do_operation($param1, $params2, $param3);

    $db Factory, function &create_handler(){switch ($db->databaseType) {}$Factory = new DBHandlerFactory($db);$Handler = &$Factory-> create_handler();$results = $Hanlder-> do_operation($param1, $params2, $param3);$Factory = new DBHandlerFactory($db);$Handler = &$Factory-> get_db_handler();$results = $Hanlder-> do_operation($param1, $params2, $param3);

    , . : - - - . 20-30 / - (20-30)*N .

    , , , , .

    1 ,

    2 . ,

    3 ()

    4 .

    1-4 , / ADODB PEAR::DB .

    5 , , . , , ..

    6 Cut&Paste 1-5 .

    100

  • PHP Inside 13

    7 , .

    ,

    8

    , -

    9

    -

    .

    .

    .

    .

    , - .

    SQL- - , - .

    , , .

    ,

    , .

    , - . - , , . , .

    - . , , -, , , - .

    , .. - . - .

    -

    . . - , .

    -. .

    101

  • PHP Inside 13

    -

    . , .

    , . , , - .

    .

    , - .

    . .

    ,

    DBMySQLClients -> DBMSSQLClients

    .

    .., . -:

    $DBFactory-> set_type(mysql);

    $DBFactory-> get_clients();

    , . -, .

    , -

    . .

    , - , .

    . .. , -, . , .

    , , , -

    , .

    , .. - -. :

    ;

    2 ;

    -.

    102

  • PHP Inside 13

    -. - - .

    . -

    .

    -, ..

    ;

    , ;

    .

    , - 5-9, , 1-4 .

    - , (, , ) - .

    103

  • PHP Inside 13 PHP::SOAP Xforms

    PHP::SOAP Xforms -

    - - ( PHP5) XForms (x-portFormsPlayer) -.

    , XML-, XML Namespaces, XPath. - XForms, -, SOA -, - , XForms - .

    - SOA

    () - IT-, . , , - . - , , - Intel-Linux-Apache-PHP-Oracle, , ( ) (ASP, Perl, Cobol, Delphi, C++, FoxPro,...).

    - . RDBMS - Oracle, - db_link' - , .

    , , , - ( , - ), .., -. , - ( -- ), , - db_link' - .

    104

    : , - : , , ,-

  • PHP Inside 13 PHP::SOAP Xforms

    , , -, Web Services Activity W3C.

    - , , , IBM, Oracle Microsoft, , , , , .

    , - - .

    PHP5 SOAP-- . , , - .

    -, - , . SOAP ( ) - .

    , -, - POST- GET-, - ( -, ),- - , SOAP- XML--.

    - , , , , SOAP- .

    XForms, - W3C, - XHTML HTML. Xorms , Xforms- XML-.

    -, , , - XML. - , XForms-- , -.

    105

  • PHP Inside 13 PHP::SOAP Xforms

    . XForms - -.

    - (1), -, WSDL-. - , GET-. URL - UDDI ( ), , , , --.

    SOAP- XML(SOAP) , -- (2) - SOAP- XML (, , ).

    -- XForms , XML- as is. XForms- WSDL- SOAP- , -, -, .

    , XForms WSDL-, - , .

    106

  • PHP Inside 13 PHP::SOAP Xforms

    . - . - , . - HTML-. HTML- , .

    HTML- HTML-:

    ;

    ;

    ;

    , HTML ;

    HTML-, -.

    HTML-:

    , :

    - (, , ), - .

    - .

    - -.

    - HTML-.

    HTML-.

    - - ( -).

    - -.

    (-).

    - .

    - XML -.

    HTML-, - . : .

    107

  • PHP Inside 13 PHP::SOAP Xforms

    - -

    , , JavaScript VBScript. HTML-. - . , -, , - . HTML- (DOM: DocumentObject Model). - , .

    : , -

    -;

    , ;

    -;

    .

    : HTML- ;

    HTML- ;

    , - ;

    - ;

    - (, -, ).

    HTML- -

    . - , : PHP, ASP, JSP,CGI

    HTML--. , - , (, - ).

    server-side :

    HTML-.

    .

    108

  • PHP Inside 13 PHP::SOAP Xforms

    .

    : .

    .

    , , -, .

    , .. , .

    .

    .

    HTML- -

    . , - -.

    HTML- -

    . , - :

    Acrobat Adobe - . Acrobat- PDF (Portable Document Format). , - . Acrobat XML-.

    (Microsoft) , InfoPath, Microsoft Office 2003. - , XML, - -.

    Xforms XForms

    , . , . XForms - XML, - XML-. - .

    ( W3C):

    109

  • PHP Inside 13 PHP::SOAP Xforms

    - , .

    XML:

    - Xforms XML. , - XHTML, XPath XML-Events, ;

    , (XForms Model), ( ) , - (Instanse data) , - (Xforms UI).

    - :

    * XML- , , - ;

    * -;

    * , , ;

    - (XForms Controls) ;

    XForms - .

    - , - (, XHTML SVG);

    , - WXS ( ), ;

    - XForms Xpath -, ;

    (--) .

    - XForms (SubmissionProtocols), - . , .

    ;

    XML-:

    - , XML;

    - non-XForms -, , Acrobat forms;

    :

    - ;

    110

  • PHP Inside 13 PHP::SOAP Xforms

    - -, ( -);

    Xforms XForms:

    XForms XML-, - . HTML : , - , , - , , , -.

    HTML , HTML -

    , - , .. HTML , , -, .

    HTML, XForms , - () , ,XHTML SVG.

    ( XML-) XForms. XML-, , XForms.

    , XForms, , , XHTML-, - XForms XHTML .

    .. , XML-. - , , , . - .

    - / . () XForms-, XForms-. XForms- , - XForms , , .. - , -, .

    111

  • PHP Inside 13 PHP::SOAP Xforms

    (instance elements) Xforms-, -. , - , .. , - . .. (bind elements). - - , .. - . , , - , , , credit card. XForms (submission elements), , -, , , - . , . - , , ( , , ). -.

    XForms- - (action elements), , - , , XForms-- , ., , - , , , - , , -, .

    XForms

    3 : , - . , . - XML.

    Xforms , ..

    , - , , :

    Instance ,

    2, XML-. , ID.

    112

  • PHP Inside 13 PHP::SOAP Xforms

    Bind -

    . - -. XForms, XML-,, XPath XML-events. XPath, , - , , - . XML (XML-events) - (DOM), , .

    Submission ,

    . , - . XForms -, XML-; - XForms . , - . XForms , - , , , -.

    Action.

    . , XForms. - ( : "xforms-model-initialize","xforms-model-destruct" "xforms-reset").

    .

    1 :

    , XMLSchema .

    XML-, ( 2).

    "/data/sum/". (bind) - "/data/amount" "/data/price/" "/data/sum".

    , "order.php", POST.

    113

  • PHP Inside 13 PHP::SOAP Xforms

    "xforms-model-destruct", , , -, . - , id="submit_1".

    Xforms

    .. XML-, -

    . , .

    2, - XML-. XML Schema, , .. (integer, string, date, ..).

    , .

    XML- -

    . 3 - ref, , "/data/amount". , (), - ().

    114

  • PHP Inside 13 PHP::SOAP Xforms

    XForms -

    . - (input fields), (output fields), (buttons) (options). XForms XML-, - ( XHTML SVG).

    XForms XHTML-. -, XForms, - "" , "" .

    Enter a number: You entered:

    XForms XHTML-.

    XForms-. : , , -

    . , .

    XForms-.

    115

  • PHP Inside 13 PHP::SOAP Xforms

    , XForms,

    . , , . - -.

    XForms , Xforms.

    , . - . :

    , - . -, - XForms . -, XSmiles Nowell Technology Preview.

    -. Xforms - -, Internet Explorer6.0. FormsPlayer,Xero IBMs XML Forms Package , - IE6.0. DENG-, Flash-, -, , Flash--.

    . XForms-- HTML+Javascript , -. IBM XMLForms Package, FormFaces.

    Xforms- . , , - -.

    , XForms.

    116

  • PHP Inside 13 PHP::SOAP Xforms

    , XForms-

    XML, - . , :

    Xero -, Web formdevelopment framework, .

    HoT Training and ConsultancyLtd.

    OpenOffice2.0 XMLForm, XForms , .

    XFormation IDE FormsPlayer.

    XML- , , - XMLSpy StylusStudio.

    .

    - -- .

    - -

    DML- . - php- - , , .

    . -

    . - - .

    1

    117

  • PHP Inside 13 PHP::SOAP Xforms

    FormsPlayer (http://www.formsplayer.com) ( I E6.0_SP1+)

    XForms -.

    XHTML-. , .

    Internet Explorer - FormsPlayer, . - (PI) , XForms.

    . message , , -, SOAP-- ( ). submission , - .

    - :

    118

  • PHP Inside 13 PHP::SOAP Xforms

    ...

    : ,

    ...

    - - .

    - ( ). - , ( uname). , , ,vpupkin, - :

    vpupkin

    SOAP-

    -.

    , -

    -, - , , -, , . , . , , - , / .

    119

  • PHP Inside 13 PHP::SOAP Xforms

    switch/case - , - . : ... :

    ...

    . -

    ( ). .

    , -, ( ).

    , , .. - . ... ...

    120

  • PHP Inside 13 PHP::SOAP Xforms

    @id=real_ws ( ). - : ... ...

    , (@ref), (@action)

    (@method) , , @replace=instance, , , .

    - ( ) :

    10090 vpupkin 2000 10091 vpupkin2

    2010 10092 vpupkin_ftp

    2020 resID1

    1 3

    25

    121

  • PHP Inside 13 PHP::SOAP Xforms

    SOAP- - , XForms -

    , - . - -:

    , ,

    , Xpath- @nodeset ( row message). , .. - .

    , , , -, , XForms - , - - .

    @appearance minimal, compact full(, , ).

    122

  • PHP Inside 13 PHP::SOAP Xforms

    , (FormsPlayer) @appearance=compact . - , index() , !

    .

    -, . , ? - , (-? -). - .

    , - . (message) - - - - - , , , , ( to_search). , message , - to_search. , :...

    123

  • PHP Inside 13 PHP::SOAP Xforms

    :

    , , -

    , - switch/case/toggle -, (, -, -, ). - . -, :

    SOAP- ,

    : @ref @value ( -, , XPath, - , -). , :

    124

  • PHP Inside 13 PHP::SOAP Xforms

    , .. message - (. - -), . ( USERS_soap_template), - - message :...

    ...

    ...

    SOAP- SOAP-

    .

    125

  • PHP Inside 13 PHP::SOAP Xforms

    - - - - .

    - -

    - ( - - ). XForms . , W3C XML Schema (WXS).XForms WXS- - . , , , , - , , , , - xsd:boolean checkbox, xsd:string , xsd:date ..datepicker.

    , WXS - . - to_search ( myUnameType). , -:

    ...

    , , -

    4 8 . ,WXS ( -), - . Xforms-- @schema Xforms:

    126

  • PHP Inside 13 PHP::SOAP Xforms

    XForms

    , , , , . - , , , (binding) XForms:...

    ... ...

    ...

    ...

    :

    4 8 ...

    xforms:bind -

    . , - ( - @ref @nodeset) ( c - @bind). , , - -.

    XML ( XML-events) CSS-.

    127

  • PHP Inside 13 PHP::SOAP Xforms

    , Xforms- , xforms-invalid ( , - , , ), :invalid ( , CSS ):

    /* */*:invalid, *.invalid { background-color: red; }/* alert */*:invalid>xforms|alert, *.invalid xforms\:alert { display:inline; }*:valid>xforms|alert, *.valid xforms\:alert { display:none; }/* repeat formsplayer */.repeat-grid-header {background-color:black;color:white;text-align:center;}.repeat-item-odd {background-color:#EEEEEE;}.repeat-item-even {background-color:white;}.repeat-index {background-color:darkblue; color: white;}.repeat-grid-cell {font-style:normal;}.repeat-grid-header-cell {font-weight:bold;}.repeat-value {border:1px black solid;}

    CSS-

    CSS - 2 , FormsPlayer.

    , ,

    - ( ), . Xforms xforms-ready, ( ). ( , ): ...

    128

  • PHP Inside 13 PHP::SOAP Xforms

    ...

    xforms-ready ,

    , xforms-ready( ).

    - XForms -

    -, . -, , , GET. , -, . card.php GET user, , :

    -

    card.php.

    129

  • PHP Inside 13 PHP::SOAP Xforms

    XForms

    , - , . - , -.

    ( submission ) , :encoding="UTF-8";echo $doc->saveXML();?>

    , , XForms- POST

    , , - , , @replace=instance submission, -. , , , , .

    - -

    - , SOAPFault, 500 (Internal Server Error). XForms , -, . - - - - (HTTP_USER_AGENT, ) - SOAPFault 500, . SOAP- , -- , .

    SOAPXForms , -

    SOAP, , , Struct Array, , SOAP- ,XForms- . SOAP- -.

    130

  • PHP Inside 13 PHP::SOAP Xforms

    - , -

    -- , - XML- . - SOA , , - -, - ; - , , - .

    - () SOA . - - - , - - .

    php--, php5 .

    XForms , HTML-, -, . XForms - - XML. -, .

    (Oracle, , - , - , - - ).

    XML-XForms -, . XForms - , - .

    131

  • PHP Inside 13 PHP::SOAP Xforms

    -, SOAP-. (, - ), , , < submission>, , < setvalue>.

    XForms - - ( ) , . , - - XForms, Gecko - SOA-.

    :1. Xforms http://www.w3.org/MarkUp/Forms/ 2. FAQ - http://www.w3.org/MarkUp/Forms/2003/xforms-faq.html 3. Web Services Activity http://www.w3.org/2002/ws/ 4. XForms for HTML Authors - http://www.w3.org/MarkUp/Forms/2003/xforms-for-html-authors.html 5. XForms conversion guideline - http://xforms.dstc.edu.au/information/xforms-conversion-guideline.pdf 6. XForms Essentials - http://xformsinstitute.com/essentials/browse/ 7. XForms: XML Powered Web Forms -http://safariexamples.informit.com/0321154991/book.html#bookpa2.html 8. - http://www.ubs.ru/ws/ 9. Ten Favorite XForms Engines (http://xml.com/pub/a/2003/09/10/xforms.html) 10. FormsPlayer - http://www.formsplayer.com/ XSmiles - http://www.x-smiles.org/ 11. DENG - http://claus.packts.net/ 12. xslt2Xforms - http://xforms.zeninteractif.com/xhtml/index.html 13. Oracle mobile browser - http://www.oracle.com/technology/tech/wireless/mobilebrowser.htm Novell - http://developer.novell.com/xforms/ Mozilla Firefox - http://www.mozilla.org/projects/xforms/ 14. Chiba - http://chiba.sourceforge.net/ Orbeon PresentationServer - http://www.orbeon.com/software/ IBM XML Forms Package - http://www.alphaworks.ibm.com/tech/xmlforms 15. OpenOffice 2.0beta - http://www.openoffice.org/ XFormation - http://www.xformation.com/ Stylus Studio XML Professional Edition - http://www.stylusstudio.com/ OnForm xPress - http://www.blackdog.co.uk/pages/onform_xpress.htm 16. Validator - http://xformsinstitute.com/validator/ XForms Buddy - http://www.beaufour.dk/index.php?sec=misc&pagename=xforms 17. XForms Wiki-1 - http://en.wikipedia.org/wiki/Xforms 18. XForms Wiki-2 - http://www.worldwidewiki.net/wiki/XForms

    132

  • PHP Inside 13 -

    - -,

    , - . , , , , - ( Yandex -- ).

    , , - . -, , ( - ) API . , , , - , , .

    1. , -

    , API, 2 :

    ;

    .

    .

    . - , , - , , .. . , , , , -, , , . , - , CVV, -. , , - (, ), -, . - .

    133

    :

  • PHP Inside 13 -

    , merchant-panel - , (-, 3D-secure Visa) / - .

    -, , , merchant-panel, (eGold).

    - ( ) . 2: - . , , -, - , , , MD5 ( + + - ). - - . , , . , , , , - 2 . (, - , ..), (, ..). - (e-Gold, RuPay), (Privat24, ). - , , , ( RuPay WM Merchant WebMoney).

    , , , -. OpenSSL PGP, RSA (, ). - ( ,WMSigner WebMoney). - , . - ( - , ).

    134

  • PHP Inside 13 -

    2 -. , ( ) ( ).

    : .

    : (), , ( ,, , , .. , , ), . : .

    2. WebMoney ( ,

    ) WM ( - ), . , WM - PayPal e-Gold, ... , - WM, -. PayPal ( - - eBay) - - , . E-Gold ( ) , , -, ( , -, 4 ).

    , PayPal, e-Gold -, WM -, .

    , : - WM . - - , ( - ) , , - , , -ASP -, . , - unix- PHP- ( , ).

    135

  • PHP Inside 13 -

    WebMoney 2 : WM Merchant , ( , - ), (HTTPS XML) ( , , 2 : - ( ) - WMID.

    2.1. WM Merchant -

    , . - https://merchant.webmoney.ru.

    , (GET,POST, URL), (/), - ( MD5, , - WMSigner).

    , - . - .

    Result URL, - . , 2 : - , , -, . Success URL Fail URL , - .

    , , -. , Success, Fail Result URL Webmoney ( , ). , - ( Result URL). Merchant-- , , : , , , WM- , - , . ( YES) ( , ). - , , .

    WM Merchant:

    136

  • PHP Inside 13 -

    ... ...

    LMI_, ( , , - ), , viewstate . , - .

    :function check_crc($responce_data) { $crc_data = array( "LMI_PAYEE_PURSE" => $responce_data["LMI_PAYEE_PURSE"], "LMI_PAYMENT_AMOUNT" => $responce_data["LMI_PAYMENT_AMOUNT"], "LMI_PAYMENT_NO" => $responce_data["LMI_PAYMENT_NO"], "LMI_MODE" => $responce_data["LMI_MODE"], "LMI_SYS_INVS_NO" => $responce_data["LMI_SYS_INVS_NO"], "LMI_SYS_TRANS_NO" => $responce_data["LMI_SYS_TRANS_NO"], "LMI_SYS_TRANS_DATE" => $responce_data["LMI_SYS_TRANS_DATE"], "LMI_SECRET_KEY" => "_", "LMI_PAYER_PURSE" => $responce_data["LMI_PAYER_PURSE"], "LMI_PAYER_WM" => $responce_data["LMI_PAYER_WM"], ); $crc_str = strtoupper(md5(implode("", $crc_data))); return $crc_str==$responce_data["LMI_HASH"]; }

    , MD5, WMSigner, - , .

    , Result URL, . - , , ( ).

    , (- ) https://merchant.webmoney.ru/conf/guide.asp.

    137

  • PHP Inside 13 -

    - WMMerchant . , - Result URL , - -

    2.2. HTTPS XML

    . . . , XML-, HTTPS- ( , ).

    , - , WMSigner.WebMoney Windows-, - . - INI , WMID, .

    PHP :function _GetSign($inStr){ $fp = popen("./WMSigner", "r+"); $PlanStr = "$inStr\004\r\n"; fwrite($fp,$PlanStr); $s = fgets($fp, 133); pclose($fp); return $s;}

    .

    NB! , , : - - ( WM, ). - , WMSigner - . -

    -, . , -. XML-, XML . XML- , . xml .

    138

  • PHP Inside 13 -

    - , , - . 1, 4, 2 9 . . .

    1 XML POST URLhttps://w3s.webmoney.ru/asp/XMLInvoice.asp

    XML :

    _WMID______INVOICE+reqn

    ____WMID_______

    XML :

    _____

    ____WMID___________ ____

    _ , 15 ( , - 14-), , . . -, . - :function _GetReqN() {

    list($usec, $sec) = explode(" ",microtime());$reqn = sprintf("%010u%04u", (float)$sec, round((float)$usec*100000));return $reqn;

    }

    139

  • PHP Inside 13 -

    - CURL :// $orderid = 18;// WMID $customerwmid = 1818181818;// $storepurse = "Z1869284749";// . , $amount = "58.5";// $desc = " 18";// $address = " ";// $period = 0;// 4 $expiration = 4;// $reqn = _GetReqN();// $sign = _GetSign($orderid . $customerwmid . $storepurse . $amount . $desc .$address . $period . $expiration . $reqn);// $request = "

    $reqn1231234321$sign

    $orderid$customerwmid$storepurse$amount$desc$address$period$expiration

    ";// CURL$cu = curl_init("https://w3s.webmoney.ru/asp/XMLInvoice.asp");curl_setopt($cu, CURLOPT_HEADER, 0);$fp = tmpfile();curl_setopt($cu, CURLOPT_SSL_VERIFYPEER, 0);// POST curl_setopt ($cu, CURLOPT_POST, 1);curl_setopt ($cu, CURLOPT_POSTFIELDS, $request);// curl_setopt ($cu, CURLOPT_FILE, $fp);// curl_exec($cu); curl_close($cu);// fseek($fp,0,SEEK_SET);$result = '';while ($str = fgets($fp,1024)) {

    $result .= $str;}fclose($fp);

    140

  • PHP Inside 13 -

    $result XML , . , retval 0 ( ), id invoice.

    2.3. Merchant VS XML ,

    WM Merchant. ? ?

    . WM Merchant - , - Internet Explorer ( - ActiveX , -, , -, , ) .

    , , , (, , , .. ), , - , .

    - . WMID , - WM Merchant. ,

    3. RuPay RuPay , ,

    , - , (WebMoney, ndex-, Internet-money, E-Gold), (Western Union, -, ). - (, -24 ). - . , .

    - ( , WebMoney). . .

    , ( - ), .

    - :

    141

  • PHP Inside 13 -

    255 ,

    255 URL ,

    - ,

    URL 255 URL ( - ), RuPay HTTP POST- . URL, . URL http:// https://

    32 , , . . RuPay !

    - ,

    . - action=http://rupay.ru/rupay/pay/index.php, . :

    ... ...

    142

  • PHP Inside 13 -

    .

    WebMoney, RuPay , . , . , . HTTPS- , -, - , .

    , ::. - -. : rupay_action, rupay_site_id,rupay_order_id, rupay_name_service, rupay_id, rupay_sum, rupay_user,rupay_email, rupay_data, rupay_secret_key; -: rupay_action, rupay_site_id, rupay_order_id, rupay_sum, rupay_id,rupay_data, rupay_status, rupay_secret_key. - MD5, - rupay_hash. , - :function check_crc($responce_data) { $crc_data = array( "rupay_action" => $responce_data["rupay_action"], "rupay_site_id" => $responce_data["rupay_site_id"], "rupay_order_id" => $responce_data["rupay_order_id"], "rupay_sum" => $responce_data["rupay_sum"], "rupay_id" => $responce_data["rupay_id"], "rupay_data" => $responce_data["rupay_data"], "rupay_status" => $responce_data["rupay_status"], "rupay_secret_key" => "_", ); $crc_str = md5(implode("::", $crc_data)); return $crc_str==$responce_data["rupay_hash"]; }

    4. E-gold ,

    (, -, , ), -, -. ( ) , , . , 18 . , ( - ), , 18-, .

    - .

    143

  • PHP Inside 13 -

    2 : ( -) .

    4.1. ,

    :

    E-gold ,