perl, apache, dbi and dbd::informix jonathan leffler open source architect classic database...

34
Perl, Apache, Perl, Apache, DBI and DBI and DBD::Informix DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering

Upload: janis-edwards

Post on 12-Jan-2016

228 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

Perl, Apache, DBI Perl, Apache, DBI and DBD::Informixand DBD::Informix

Jonathan LefflerOpen Source Architect

Classic Database Engineering

Page 2: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

AgendaAgenda

• Perl

• DBI

• DBD::Informix

• Apache

• mod_perl

• Questions and Answers

• Perl

• DBI

• DBD::Informix

• Apache

• mod_perl

• Questions and Answers

DBD::Informix - Perl’s Route to InformixDBD::Informix - Perl’s Route to Informix

Page 3: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Practical Extraction and Report LanguagePractical Extraction and Report Language

PerlPerl

• Originally written by Larry Wall

• Very widely available

• Current stable versions:• 5.6.0

• some packages (HTML::Mason 0.89) do not work with this

• 5.005_03 (with optional thread support)• 5.004_04 (without thread support)

• Obtain via CPAN• Comprehensive Perl Archive Network• http://www.cpan.org/

• Originally written by Larry Wall

• Very widely available

• Current stable versions:• 5.6.0

• some packages (HTML::Mason 0.89) do not work with this

• 5.005_03 (with optional thread support)• 5.004_04 (without thread support)

• Obtain via CPAN• Comprehensive Perl Archive Network• http://www.cpan.org/

Page 4: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

PerlPerl

• Script Language• Does not require compilation

• Complex looking code

• Can be incredibly terse

• Can be quite legible

• Excellent at string handling

• Excellent access to operating system

• Script Language• Does not require compilation

• Complex looking code

• Can be incredibly terse

• Can be quite legible

• Excellent at string handling

• Excellent access to operating system

Do You Need Anything Else?Do You Need Anything Else?

Page 5: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Perl: A Two-LinerPerl: A Two-Liner

#!/usr/bin/perl -wp

s/\$([A-Z][a-z]+|RCSfile): ([^\$]+) \$/$2/g;

• TMTOWTDI• There’s more than one way to do it!• (Yes, you could use sed for this)

perl -wp -e ’s%\$\w+: ([^\$]+) \$%$1%go;’ $*

#!/usr/bin/perl -wp

s/\$([A-Z][a-z]+|RCSfile): ([^\$]+) \$/$2/g;

• TMTOWTDI• There’s more than one way to do it!• (Yes, you could use sed for this)

perl -wp -e ’s%\$\w+: ([^\$]+) \$%$1%go;’ $*

Remove RCS Markers for RCS KeywordsRemove RCS Markers for RCS Keywords

Page 6: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Another ExampleAnother Example

File RenamingFile Renaming

#!/usr/bin/perl# @(#)$Id: rename.pl,v 1.1 1992/01/05 22:33:47 jl Exp $# Rename files using a Perl substitute command

($op = shift) || die "Usage: $0 perlexpr [filenames]\n";if (!@ARGV) {

@ARGV = <STDIN>;chop(@ARGV);

}for (@ARGV){

$was = $_;eval $op;die $@ if $@;rename($was, $_) unless $was eq $_;

}

#!/usr/bin/perl# @(#)$Id: rename.pl,v 1.1 1992/01/05 22:33:47 jl Exp $# Rename files using a Perl substitute command

($op = shift) || die "Usage: $0 perlexpr [filenames]\n";if (!@ARGV) {

@ARGV = <STDIN>;chop(@ARGV);

}for (@ARGV){

$was = $_;eval $op;die $@ if $@;rename($was, $_) unless $was eq $_;

}

Page 7: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Using Perl and a Database? Use DBI!Using Perl and a Database? Use DBI!

Perl Database InterfacePerl Database Interface

• DBI written by Tim Bunce

• Standard way to access databases with Perl

• Many database drivers available• Including ODBC• And Oracle• And, of course, Informix• And many others

• Current version 1.14

• DBI written by Tim Bunce

• Standard way to access databases with Perl

• Many database drivers available• Including ODBC• And Oracle• And, of course, Informix• And many others

• Current version 1.14

Page 8: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

8

useruser .conference.conferenceInformixInformix

The Cheetah BookThe Cheetah Book

• The ‘bible’ for Perl DBI

• Authors:• Alligator Descartes • Tim Bunce

• O’Reilly, February 2000

• ISBN 1-56592-699-4

• http://www.oreilly.com/

• The ‘bible’ for Perl DBI

• Authors:• Alligator Descartes • Tim Bunce

• O’Reilly, February 2000

• ISBN 1-56592-699-4

• http://www.oreilly.com/

Page 9: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Database Handles are CrucialDatabase Handles are Crucial

DBI: Database HandlesDBI: Database Handles

• Create database handles• $dbh = DBI->connect(‘DBI:Informix:stores7’);

• Database methods• $dbh->do(‘DELETE FROM Customer’);

• Transaction control• $dbh->rollback;• $dbh->commit;

• Disconnect• $dbh->disconnect;

• Create database handles• $dbh = DBI->connect(‘DBI:Informix:stores7’);

• Database methods• $dbh->do(‘DELETE FROM Customer’);

• Transaction control• $dbh->rollback;• $dbh->commit;

• Disconnect• $dbh->disconnect;

Page 10: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Statement Handles Are Important TooStatement Handles Are Important Too

DBI: Statement HandlesDBI: Statement Handles

• Create statement handles• $sth = $dbh->prepare(qq{ DELETE FROM Customer WHERE Lname LIKE ‘%$name%’ AND ZipCode IS NULL });

• Statements can be executed• $sth->execute();

• Statement handles can be released• Implicitly

• When statement handle goes out of scope

• Explicitly• undef $sth;

• Create statement handles• $sth = $dbh->prepare(qq{ DELETE FROM Customer WHERE Lname LIKE ‘%$name%’ AND ZipCode IS NULL });

• Statements can be executed• $sth->execute();

• Statement handles can be released• Implicitly

• When statement handle goes out of scope

• Explicitly• undef $sth;

Page 11: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

SELECT is Fairly SimpleSELECT is Fairly Simple

DBI: Handling SELECTDBI: Handling SELECT

• Statement handles are used for SELECT too• $sth = $dbh->prepare(q% SELECT * FROM Customer WHERE Fname = ? AND Lname = ? ORDER BY Lname, Fname%);

• $sth->execute($firstname, $surname);• @results = $sth->fetchall_arrayref;• …process results• undef $sth;

• Statement handles are used for SELECT too• $sth = $dbh->prepare(q% SELECT * FROM Customer WHERE Fname = ? AND Lname = ? ORDER BY Lname, Fname%);

• $sth->execute($firstname, $surname);• @results = $sth->fetchall_arrayref;• …process results• undef $sth;

Page 12: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

TMTOWTDI!TMTOWTDI!

DBI: Handling SELECTDBI: Handling SELECT

• Many ways to fetch rows• $sth->fetchrow_array• $sth->fetchrow_hashref• $sth->fetchrow_arrayref• $sth->fetchall_arrayref

• And some utility functions• $dbh->selectall_arrayref• $dbh->selectrow_arrayref

• Many ways to fetch rows• $sth->fetchrow_array• $sth->fetchrow_hashref• $sth->fetchrow_arrayref• $sth->fetchall_arrayref

• And some utility functions• $dbh->selectall_arrayref• $dbh->selectrow_arrayref

Page 13: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Using DBD::Informix is Using DBIUsing DBD::Informix is Using DBI

DBD::Informix: At LastDBD::Informix: At Last

• Using DBD::Informix is using DBI• All the examples work with DBD::Informix

• Current version is 1.00.PC1

• Building DBD::Informix is easy• Requires working ESQL/C 5.00 or later• ANSI C compiler (code uses prototypes)• Test database with DBA privileges• Perl version 5.004 or later

• 5.005_03 or 5.6.0 strongly recommended

• DBI version 1.02 or later• Version 1.14 strongly recommended

• Using DBD::Informix is using DBI• All the examples work with DBD::Informix

• Current version is 1.00.PC1

• Building DBD::Informix is easy• Requires working ESQL/C 5.00 or later• ANSI C compiler (code uses prototypes)• Test database with DBA privileges• Perl version 5.004 or later

• 5.005_03 or 5.6.0 strongly recommended

• DBI version 1.02 or later• Version 1.14 strongly recommended

Page 14: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Building Perl Modules is Easy!Building Perl Modules is Easy!

Installing DBD::InformixInstalling DBD::Informix

• Download software from CPAN• cd DBD-Informix-1.00.PC1• more README• perl Makefile.PL• make• make test• make install• Have fun!

• Same rules apply to all Perl modules

• Download software from CPAN• cd DBD-Informix-1.00.PC1• more README• perl Makefile.PL• make• make test• make install• Have fun!

• Same rules apply to all Perl modules

Page 15: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

#! /usr/bin/perl -w

use DBI;

$dbh = DBI->connect(‘DBI:Informix:stores7’,’’,’’, {RaiseError => 1, PrintError=>1});

$sth = $dbh->prepare(q%SELECT Fname, Lname, Phone

FROM Customer WHERE Customer_num = ? %);

$sth->execute(106);

$ref = $sth->fetchall_arrayref();

for $row (@$ref) {

print “Name: $$row[0] $$row[1], Phone: $$row[2]\n”;

}

$dbh->disconnect;

#! /usr/bin/perl -w

use DBI;

$dbh = DBI->connect(‘DBI:Informix:stores7’,’’,’’, {RaiseError => 1, PrintError=>1});

$sth = $dbh->prepare(q%SELECT Fname, Lname, Phone

FROM Customer WHERE Customer_num = ? %);

$sth->execute(106);

$ref = $sth->fetchall_arrayref();

for $row (@$ref) {

print “Name: $$row[0] $$row[1], Phone: $$row[2]\n”;

}

$dbh->disconnect;

DBD::Informix: ExampleDBD::Informix: Example

Error Checking Automated Error Checking Automated

Page 16: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

AutoCommit Controls TransactionsAutoCommit Controls Transactions

DBD::Informix and AutoCommitDBD::Informix and AutoCommit

• AutoCommit is on by default• To comply with DBI requirements• Cannot be unset on unlogged databases• Simulates MODE ANSI on logged databases• Explicit BEGIN WORK is possible

• $dbh->do(‘begin work’);• $dbh->{AutoCommit} = 0;•$dbh = DBI->connect(‘DBI:Informix:stores7’, ‘’, ‘’, { AutoCommit => 0 });

• AutoCommit is on by default• To comply with DBI requirements• Cannot be unset on unlogged databases• Simulates MODE ANSI on logged databases• Explicit BEGIN WORK is possible

• $dbh->do(‘begin work’);• $dbh->{AutoCommit} = 0;•$dbh = DBI->connect(‘DBI:Informix:stores7’, ‘’, ‘’, { AutoCommit => 0 });

Page 17: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Standard DBI InformationStandard DBI Information

• Standard database attributes• $dbh->{Driver}• $dbh->{AutoCommit}• $dbh->{PrintError}• $dbh->{RaiseError}• $dbh->{ChopBlanks}

• Standard database attributes• $dbh->{Driver}• $dbh->{AutoCommit}• $dbh->{PrintError}• $dbh->{RaiseError}• $dbh->{ChopBlanks}

Standard DBI AttributesStandard DBI Attributes

Page 18: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Standard DBI InformationStandard DBI Information

• Standard statement attributes• $sth->{Statement}• $sth->{CursorName}• $sth->{NUM_OF_FIELDS}• $sth->{NUM_OF_PARAMS}• $sth->{NAME}• $sth->{TYPE}• $sth->{NULLABLE}

• Standard statement attributes• $sth->{Statement}• $sth->{CursorName}• $sth->{NUM_OF_FIELDS}• $sth->{NUM_OF_PARAMS}• $sth->{NAME}• $sth->{TYPE}• $sth->{NULLABLE}

Standard DBI AttributesStandard DBI Attributes

Page 19: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Standard DBI InformationStandard DBI Information

• Standard handle attributes• $h->err• $h->errstr• $h->state

• Standard handle methods• $h->trace($trace_level)• $h->trace_msg(“message”)

• Standard handle attributes• $h->err• $h->errstr• $h->state

• Standard handle methods• $h->trace($trace_level)• $h->trace_msg(“message”)

Standard Handle AttributesStandard Handle Attributes

Page 20: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Informix-only InformationInformix-only Information

• SQLCA is available• $sth->{ix_sqlcode}• $sth->{ix_sqlerrd} - an array• $sth->{ix_sqlerrm}• $sth->{ix_sqlerrp}• $sth->{ix_sqlwarn} - an array

• SQLCA is available• $sth->{ix_sqlcode}• $sth->{ix_sqlerrd} - an array• $sth->{ix_sqlerrm}• $sth->{ix_sqlerrp}• $sth->{ix_sqlwarn} - an array

Access to SQLCAAccess to SQLCA

Page 21: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Informix Database AttributesInformix Database Attributes

Informix-only InformationInformix-only Information

• Non-standard attributes• $dbh->{ix_InformixOnline}• $dbh->{ix_LoggedDatabase}• $dbh->{ix_ModeAnsiDatabase}• $dbh->{ix_InTransaction}• $dbh->{ix_ConnectionName}

• Standard attribute• $dbh->{Name} — database name

• Non-standard attributes• $dbh->{ix_InformixOnline}• $dbh->{ix_LoggedDatabase}• $dbh->{ix_ModeAnsiDatabase}• $dbh->{ix_InTransaction}• $dbh->{ix_ConnectionName}

• Standard attribute• $dbh->{Name} — database name

Page 22: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Informix Driver AttributesInformix Driver Attributes

Informix-only InformationInformix-only Information

• Non-standard attributes• $drh->{ix_ProductVersion}

• a version number for ESQL/C

• $drh->{ix_ProductName}• $drh->{ix_MultipleConnections}• $drh->{ix_ActiveConnections}• $drh->{ix_CurrentConnection}• $drh->{ix_ServerVersion}

• a version number for the database server

• All these attributes can also be found via the database handle, $dbh

• Non-standard attributes• $drh->{ix_ProductVersion}

• a version number for ESQL/C

• $drh->{ix_ProductName}• $drh->{ix_MultipleConnections}• $drh->{ix_ActiveConnections}• $drh->{ix_CurrentConnection}• $drh->{ix_ServerVersion}

• a version number for the database server

• All these attributes can also be found via the database handle, $dbh

Page 23: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Statement AttributesStatement Attributes

Informix-only InformationInformix-only Information

• Non-standard attributes• $sth->{ix_NativeTypeName}• $sth->{ix_ColType}• $sth->{ix_ColLength}

• Non-standard attributes• $sth->{ix_NativeTypeName}• $sth->{ix_ColType}• $sth->{ix_ColLength}

Page 24: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

DBD::Informix is Not Perfect DBD::Informix is Not Perfect

DBD::InformixDBD::Informix

• Known Limitations• Not yet fully aware of 9.x collection types or UDTs• Doesn’t handle blobs in UPDATE statements

• Coded in DBD::Informix 1.10.PC1

• At least one memory leak• No support for bind_param_inout methods

• Version 1.00.PC1 is an Informix product• Officially “Informix Database Driver for Perl”• The support channel is [email protected]

• Known Limitations• Not yet fully aware of 9.x collection types or UDTs• Doesn’t handle blobs in UPDATE statements

• Coded in DBD::Informix 1.10.PC1

• At least one memory leak• No support for bind_param_inout methods

• Version 1.00.PC1 is an Informix product• Officially “Informix Database Driver for Perl”• The support channel is [email protected]

Page 25: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Please Read the README File!Please Read the README File!

DBD::Informix DocumentsDBD::Informix Documents

• Primary References• Pre-install

• README file• Informix.Licence file

• Post-install• perldoc DBI• perldoc DBD::Informix

• Books• Programming Perl, 3rd Edition• Programming the Perl DBI• Perl Resource Kits (Unix, Win32) - O’Reilly

• Primary References• Pre-install

• README file• Informix.Licence file

• Post-install• perldoc DBI• perldoc DBD::Informix

• Books• Programming Perl, 3rd Edition• Programming the Perl DBI• Perl Resource Kits (Unix, Win32) - O’Reilly

Page 26: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Help Yourself - Join the Mailing List!Help Yourself - Join the Mailing List!

DBD::Informix: Web SitesDBD::Informix: Web Sites

• Use CPAN to obtain the software• www.cpan.org

• DBI web sites• www.symbolstone.org/technology/perl/DBI• www.isc.org/dbi-lists.html

• Sign up for [email protected] mailing list

• eskimo.tamu.edu/~jbaker/dbi-examples.html

• Use CPAN to obtain the software• www.cpan.org

• DBI web sites• www.symbolstone.org/technology/perl/DBI• www.isc.org/dbi-lists.html

• Sign up for [email protected] mailing list

• eskimo.tamu.edu/~jbaker/dbi-examples.html

Page 27: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Apache Apache

• Apache Web Server• Most widely used web server• Version 1.3.14

• unless there’s another new version this week

• Modular structure• Allows special purpose modules to be added

• mod_jserv - Java Server• mod_perl - Perl Interpreter

• Apache Web Server• Most widely used web server• Version 1.3.14

• unless there’s another new version this week

• Modular structure• Allows special purpose modules to be added

• mod_jserv - Java Server• mod_perl - Perl Interpreter

Why Aren’t You Using Apache?Why Aren’t You Using Apache?

Page 28: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Apache, Perl and CGIApache, Perl and CGI

• CGI scripts drive the web

• Many of them are Perl scripts

• Most of those use the CGI module

• http://www.somewhere.com/cgi-bin/script.pl• Giveaway that there’s a Perl script in use• Often not that easy to spot

• Can be slow on heavily loaded servers• New Perl interpreter loaded for every hit

• CGI scripts drive the web

• Many of them are Perl scripts

• Most of those use the CGI module

• http://www.somewhere.com/cgi-bin/script.pl• Giveaway that there’s a Perl script in use• Often not that easy to spot

• Can be slow on heavily loaded servers• New Perl interpreter loaded for every hit

Perl Drives a Lot of Web SitesPerl Drives a Lot of Web Sites

Page 29: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Apache and mod_perlApache and mod_perl

• Use mod_perl version 1.24_01

• Requires Perl 5.004 or later

• Can automatically download pre-requisites• perl -MCPAN -e ‘install Bundle::Apache’• Downloads, compiles, tests, install software

• Experimental DBI version available• perl -MCPAN -e ‘install Bundle::DBI’• perl -MCPAN -e ‘install Bundle::DBD::Informix’

• Use mod_perl version 1.24_01

• Requires Perl 5.004 or later

• Can automatically download pre-requisites• perl -MCPAN -e ‘install Bundle::Apache’• Downloads, compiles, tests, install software

• Experimental DBI version available• perl -MCPAN -e ‘install Bundle::DBI’• perl -MCPAN -e ‘install Bundle::DBD::Informix’

If You Weren’t Convinced by Perl, Try This!If You Weren’t Convinced by Perl, Try This!

Page 30: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Greased LightningGreased Lightning

• Apache with mod_perl• Uses same CGI scripts

• Cleaned up for multiple use

• Loads scripts once and reuses them• Without starting a separate process each hit• Can even re-use database connections

• Apache::DBI module

• BUT• httpd is much bigger

• Also consider FastCGI

• Apache with mod_perl• Uses same CGI scripts

• Cleaned up for multiple use

• Loads scripts once and reuses them• Without starting a separate process each hit• Can even re-use database connections

• Apache::DBI module

• BUT• httpd is much bigger

• Also consider FastCGI

Much Faster Web ServiceMuch Faster Web Service

Page 31: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

There’s a Lot of It AboutThere’s a Lot of It About

Apache DocumentationApache Documentation

• http://perl.apache.org/

• Use perldoc for mod_perl info• mod_perl_traps• mod_perl_tuning• Apache::DBI• cgi_to_mod_perl• CGI

• HOWTO for Linux at IIUG web site• http://www.iiug.org/

• http://perl.apache.org/

• Use perldoc for mod_perl info• mod_perl_traps• mod_perl_tuning• Apache::DBI• cgi_to_mod_perl• CGI

• HOWTO for Linux at IIUG web site• http://www.iiug.org/

Page 32: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Java-enabled Web ServersJava-enabled Web Servers

Apache and mod_javaApache and mod_java

• Apache-Jserv• Currently version 1.1.2

• Similar to Apache & Perl

• Requires JDK 1.1.x and JSDK 2.0

• Obtain from Apache web site• http://java.apache.org

• HOWTO in D4GL corner of IDN web site

• Apache-Jserv• Currently version 1.1.2

• Similar to Apache & Perl

• Requires JDK 1.1.x and JSDK 2.0

• Obtain from Apache web site• http://java.apache.org

• HOWTO in D4GL corner of IDN web site

Page 33: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Your Turn! Don’t forget to check out

http://www.informix.com/idn

http://www.iiug.org/

http://www.perl.com/

http://www.apache.org/

Thank You for Listening

Your Turn! Don’t forget to check out

http://www.informix.com/idn

http://www.iiug.org/

http://www.perl.com/

http://www.apache.org/

Thank You for Listening

Page 34: Perl, Apache, DBI and DBD::Informix Jonathan Leffler Open Source Architect Classic Database Engineering Jonathan Leffler Open Source Architect Classic

useruser .conference.conferenceInformixInformix

Questions and AnswersQuestions and Answers