Upload
alex-frenkel
View
6.821
Download
1
Embed Size (px)
DESCRIPTION
Presentation about how to start up with PHP on IBM system I.Givem by Sam Pinkhasov at 1 day seminar in IBM on 3/6/2009
Citation preview
Copyright © 2007, Zend Technologies Inc.
How to Start up with PHP in IBM i
June, 2007
Sam Pinkhasov
Project Manager for IBM products
Agenda
• First steps
• Accessing DB2/400
• PHP Toolkit for i5/OS
• 5250 Bridge
• PHP is ready for production by OpeniVew
• Q&A
Zend Platform with 5250 Bridge
IBM i
DB2/400
Pgm, CMD,Spooled file
Database
Business
Zend StudioBrowser
Zend Core with Toolkit APIs
Apache webserver
Zend PHP Products for IBM I Diagram
Zend Guard
Windows/Linux
• Setting up PHP in IBM i
• Verify installation
• Setup debug in Zend Studio and Zend Core
• Write a simple PHP code
First Steps
Setting up PHP in IBM i
• Requirements 5722SS1 - PASE Option (Option 33) 5733SC1 - IBM Portable Utilities For I5/OS (Option *BASE) 5733sc1 - OpenSSH ,OpenSST,Zlib (Option 1)
• Download Zend Core for i5/OS from zend.com RSTLICPGM installation Creates the ZENDCORE library, /usr/local/Zend directory, and
Zend-specific user profiles
• Start the Zend subsystem and the HTTP servers GO ZENDCORE/ZCMENU Option 5 (Service Management menu) Option 1 (Start Zend Core subsystem) or Option 4 (Start
Apache server instances)
Setting up PHP in IBM i
• Download Zend Studio for i5/OS from zend.com Integrated development environment Runs on Windows and Linux
• Start Zend Core console: http://i5_server:89
• Run WRKACTJOB SBS(ZEND) CL command
• Run PHP demo application installed with the product
Installation verification
Zend Core Console http://i5_server:89
Zend Subsystem – wrkactjob sbs(Zend)
• Run Zend Navigator demo application• URL: http://i5_server:89/Zend_Navigator_Demo/login.php
Run PHP Application
The demo application sources are available in www/zendcore/htdocs/Zend_Navigator_Demo.
Run Zend Navigatorhttp://i5_server:89/Zend_Navigator_Demo/login.php
Zend Core – Debug Set Up
Zend Core – Restart Apache
•GO ZENDCORE/ZCMENU
Zend Studio - Debug Set Up
Writing a simple PHP code
• Map IFS directory /www/zendcore/htdocs to Windows driver
• Start Zend Studio
• Start project wizard: New->Project
• Select Windows mapped IFS drive
• Write the following code
<?php
echo phpinfo();
?>
• Save as test.php
• Run http://i5_server:89/test.php
Writing a simple PHP code
Running PHP command line
• From the default PASE shell. call qp2term
/usr/local/Zend/core/bin/php-cli -help
• From the System i command line (or CL program) CALL PGM(QP2SHELL) PARM('/usr/local/Zend/core/bin/php-cli' '-help')
• From QSH. QSH
/usr/local/Zend/core/bin/php-cli –help
• Example: /usr/local/Zend/core/bin/php-cli /usr/local/Zend/apache2/htdocs/DB2_example.php
Accessing DB2/400
• Server/connection db2_bind_param db2_client_info db2_close db2_connect db2_cursor_type db2_exec db2_execute db2_prepare db2_pconnect db2_server_info db2_statistics
• Result db2_free_result db2_next_result db2_result
• Commit/Rollback db2_autocommit db2_commit db2_rollback
• Errors db2_conn_error db2_conn_errormsg db2_stmt_error db2_stmt_errormsg
• Column/Procedure db2_column_privileges db2_columns db2_procedure_columns db2_procedures db2_special_columns
• Table information db2_num_fields db2_num_rows db2_table_privileges db2_tables
• Fetch db2_fetch_array db2_fetch_assoc db2_fetch_both db2_fetch_object db2_fetch_row
• Field information db2_field_display_size db2_field_name db2_field_num db2_field_precision db2_field_scale db2_field_type db2_field_width
• Key information db2_foreign_keys db2_primary_keys
• Statement db2_free_stmt
• There are few connections options in PHP db2_connect(“”,””,””) – local server
• The database connection job is create under the same user as the Apache httpd server profile NOBODY (*USER).
db2_connect(“127.0.0.1", “SAM", “PASSWROD")– local server • The database connection job is created under the user profile
SAM/PASSWROD.
db2_connect(“10.1.1.33", “SAM", “PASSWROD") – remote remote database connection job is created under the user server
• The profile SAM/PASSWROD.
Server connection – db2_connect API
Tip: Use WRKRDBDIRE to get the database name on the remote
• DB2 functions • db2_connect– Connects to server• db2_prepare – Prepares an SQL statement• db2_bind_param – Binds the an SQL statement• db2_execute – Executes an SQL command• db2_fetch_array – Reads records
• View attached program DB2_example.php
Sample code accessing database
Program Result http://i5_server:89/DB2_example .php
Recommendations
• CCSID = 65535• PHP scripts getting “junk” back from their DB2 SQL queries. Root problem is often QCCSID setting
65535 (binary default from manufacturing) Change CCSID before starting Apache
• signon as QSECOFR• GO ZENDCORE/ZCMENU -> stop apache• CHGJOB LANGID(ENU) CNTRYID(US) CCSID(37)• GO ZENDCORE/ZCMENU -> start apache
• Journaling (transactions) php.ini setting ibm_db2.i5_allow_commit=0 is the default. If all of your schemas/libraries have journal enabled change php.ini to ibm_db2.i5_allow_commit=1
Other File Functions
• PHP has number of functions allowing access and update information contained in flat files and streams on IBM i.
Open, read, write and close a flat file• fopen ()
• fclose ()
• fread ()
• fwrite ()
Read a CSV file fgetcsv()
Look it up in the PHP manual to see files examples.
PHP Toolkit for i5/OS
• Bundled with Zend Core
• Geared towards accessing data and resources from PHP Programs and/or service programs Data Queue CL commands Spooled files Record-level file access User Space
PHP Toolkit for i5/OS – list of functions
• Connection management i5_connect i5_pconnect i5_close i5_pclose i5_adopt_authority i5_error i5_errno i5_errormsg
• Command calls i5_command
• Program calls i5_program_prepare i5_program_prepare_PCML i5_program_call i5_program_close
• Data retrieval i5_fetch_array i5_fetch_assoc i5_fetch_object i5_fetch_row i5_info i5_field_len i5_field_name i5_field_scale i5_field_type i5_list_fields i5_num_fields i5_result
• Native file access i5_open i5_addnew I5_edit I5_delete i5_cancel_edit i5_setvalue i5_update i5_range_from i5_range_to i5_range_clear i5_data_seek i5_seek i5_bookmark i5_free_file i5_new_record i5_update_record i5_get_keys
• SQL access I5_query I5_prepare i5_bind_result i5_execute i5_getblob i5_setblob
• Transactions i5_transactions i5_commit i5_rollback
PHP Toolkit functions• System values
i5_get_system_value
• Data areas i5_data_area_prepare i5_data_area_receive i5_data_area_send i5_data_area_close
•Print/Get spooled file i5_spool_list i5_spool_list_read i5_spool_list_close i5_spool_get_data i5_spool_from_file
• Job logs i5_jobLog_list i5_jobLog_list_read i5_jobLog_list_close
• Active jobs i5_job_list i5_job_list_read i5_job_list_close
• Objects list i5_object_list i5_object_list_read i5_object_list_close
• User space i5_userspace_crearte i5_userspace_prepare i5_userspace_get i5_userspace_put
• Data Queue i5_dtaq_prepare i5_dtaq_recieve i5_dtaq_send i5_dtaq-close
• RPG program
Sample code calling an RPG program
• PHP Toolkit functions • I5_connect – opens server connection
• i5_program_prepare – defines the program parameters
• i5_program_call – calls a program
• i5_program_close – clears program handles
• i5-_close – closes server connection
Sample code calling an RPG program
PHP Toolkit Resources
• Zend Core User Guide• Zend Core for i5/OS product page –
http://www.zend.com/products/zend_core/zend_core_for_i5_os• Zend Core installation directory -
/usr/local/Zend/Zend_Core_User_Guide_i5OS.pdf
PHP Toolkit Templates
PHP Toolkit Templates are available in Zend Studio RAD Error free code Good learning tool Code standardization Create your company specific logic
• How to access? Toolkit templates list - Window ->Preference->Templates Import/Export
• Documentation Zend Core and Zend Studio User Guide
|
Product Definition
The 5250 Bridge is a PHP based solution for running interactive applications in the i5/OS environment
|
Technical Overview
• PHP library containing set of PHP functions/classes accessing 5250 data stream allowing to run any 5250 interface/applications in PHP Utilizing IBM WebFace server – part of i5/OS TCP/IP All screen information available:
• Input and Output fields and attributes• Format name
Maintainable 5250 session No Java
|
5250 Bridge Diagram
|
Demo Program – Subfile Application
Resources: Books
• Sklar, David. Learning PHP 5. O'Reilly Media, Inc. 2004. http://www.oreilly.com/catalog/learnphp5/
• Kelly, Brian. Getting Started with PHP for i5/OS, MC Press http://www.mc-store.com/5934.html
• Jeff Olen , Kevin Schroeder, The IBM i Programmer's Guide to PHP
http://www.mc-store.com/5096.html
• PHP: Zend for i5/OS Redbook SG24-7327-00
http://www.redbooks.ibm.com/abstracts/sg247327.html
Resources: Web sites
• PHP documentation at php.net http://www.php.net/docs.php
• DB2 documentation http://phpbuilder.com/manual/en/ref.ibm-db2.php
• Zend and i5/OS Overview, benefits, products, getting started http://www-03.ibm.com/systems/i/software/php/
• ReadWiki – online documentation http://www-941.ibm.com/collaboration/wiki/display/sg247327/Home
• PHP for i5/OS forums – discussion groups http://www.zend.com/forums
Resources: Web sites
• Zend Developer Zone -Tutorials http://devzone.zend.com/public/view/tag/tutorials “Integrating PHP Using Web Services”
http://www.ibmsystemsmag.com/i5/april07/tipstechniques/12365p1.aspx
• Tips Installing Zend Core -http://www.mcpressonline.com/mc?
[email protected]@.6b507b23 Use PHP to Bring i5/OS Resources to the Web
• http://www.itjungle.com/fhg/fhg103107-story01.html
• http://www.itjungle.com/fhg/fhg011608-story01.html
Resources: Sample Code
• Check out the thousands of PHP scripts available that can be used as-is or as the starting point for Web projects.
http://www.hotscripts.com http://www.phpjunkyard.com/ http://www.phpfreaks.com/ http://phpfreebies.com/