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