<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
<channel>
    <title>PHP and Oracle: Christopher Jones</title>
  <link>https://blogs.oracle.com/opal/</link>
      
    <description>Notes on the Oracle PHP Apache Linux ("OPAL") stack, with bits of Python, Perl and Ruby for good luck</description>
  <language>en-us</language>
  <copyright>Copyright 2012</copyright>
  <lastBuildDate>Wed, 14 Mar 2012 22:35:58 -0500</lastBuildDate>
    <generator>Apache Roller BLOGS401ORA4 (20120203073044)</generator>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ChristopherJonesOnPHP" /><feedburner:info uri="christopherjonesonphp" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/php_fpm_fastcgi_process_manager</guid>
    <title>PHP-FPM FastCGI Process Manager with Apache 2</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/nlY3egHpBq8/php_fpm_fastcgi_process_manager</link>
        <pubDate>Tue, 13 Mar 2012 23:00:00 -0500</pubDate>
    <category>php</category>
    <category>apache</category>
    <category>fastcgi</category>
    <category>php</category>
    <category>php-fpm</category>
    <category>server</category>
    <category>web</category>
            <description>&lt;p&gt;I've &lt;a href="https://blogs.oracle.com/opal/entry/php_5_4_0_rpms"
&gt;published some vanilla PHP 5.4.0 RPMs&lt;/a&gt; to make new feature testing
easier.&lt;/p&gt;

&lt;p&gt;Along with all the PHP 5.4 goodies, the php-fpm "FastCGI Process
Manager" is available for the first time on oss.oracle.com.  Php-fpm
is an alternative FastCGI interface to PHP with various extra features
such as load dependent spawning of processes.  (For other features,
see &lt;a href="http://php-fpm.org/"&gt;php-fpm.org&lt;/a&gt;).  Php-fpm
has been getting more and more traction in the PHP community and the
EXPERIMENTAL flag was removed in PHP 5.4.  You might want to test it
out.&lt;/p&gt;

&lt;p&gt;To use php-fpm with the default Apache web server, first install
Oracle Linux 5.8 (64bit) using Oracle's free, public yum repository &lt;a
href="http://public-yum.oracle.com/"
&gt;public-yum.oracle.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Install Apache, if not already installed:&lt;/p&gt;

&lt;pre&gt;
  yum install httpd
&lt;/pre&gt;

&lt;p&gt;Download and install the PHP 5.4 RPMs from &lt;a
href="http://oss.oracle.com/projects/php/"
&gt;oss.oracle.com/projects/php&lt;/a&gt;:&lt;/p&gt;

&lt;pre&gt;
  rpm -i php54-common-5.4.0-1.el5.x86_64.rpm php54-fpm-5.4.0-1.el5.x86_64.rpm
&lt;/pre&gt;

&lt;p&gt;Other extensions can also be installed, depending on the functionality
you want to test.&lt;/p&gt;

&lt;p&gt;Download and build FastCGI for Apache:&lt;/p&gt;

&lt;pre&gt;
  wget http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz
  tar -zxf mod_fastcgi-current.tar.gz
  cd mod_fastcgi-2.4.6
  cp Makefile.AP2 Makefile
  make top_dir=/usr/lib64/httpd
&lt;/pre&gt;

&lt;p&gt;Install FastCGI as root:&lt;/p&gt;

&lt;pre&gt;
  make top_dir=/usr/lib64/httpd install
&lt;/pre&gt;

&lt;p&gt;Edit &lt;code&gt;/etc/httpd/conf/httpd.conf&lt;/code&gt; and comment out any
existing references to PHP you might previously have added for
testing: &lt;/p&gt;

&lt;pre&gt;
# LoadModule php5_module        modules/libphp5.so
# AddType application/x-httpd-php .php
&lt;/pre&gt;

&lt;p&gt;Add the php-fpm configuration to &lt;code&gt;httpd.conf&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;
  LoadModule fastcgi_module modules/mod_fastcgi.so

  &amp;lt;IfModule mod_fastcgi.c&amp;gt;  
    FastCGIExternalServer /usr/sbin/php-fpm -host 127.0.0.1:9000
    AddHandler php-fastcgi .php  

    #&amp;lt;LocationMatch "/status"&amp;gt;
    #  SetHandler php-fastcgi-virt
    #  Action php-fastcgi-virt /usr/sbin/php-fpm.fcgi virtual
    #&amp;lt;/LocationMatch&amp;gt;

    Action php-fastcgi /usr/sbin/php-fpm.fcgi  
    ScriptAlias /usr/sbin/php-fpm.fcgi /usr/sbin/php-fpm  

    &amp;lt;Directory /usr/sbin&amp;gt;  
      Options ExecCGI FollowSymLinks  
      SetHandler fastcgi-script  
      Order allow,deny  
      Allow from all  
    &amp;lt;/Directory&amp;gt;  
  &amp;lt;/IfModule&amp;gt; 
&lt;/pre&gt;

&lt;p&gt;Start php-fpm and Apache:&lt;/p&gt;

&lt;pre&gt;
  service php-fpm start
  service httpd start
&lt;/pre&gt;

&lt;p&gt;Test it out with your favorite script or create a file &lt;code&gt;pi.php&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;
  &amp;lt;?php
    phpinfo();
  ?&amp;gt;
&lt;/pre&gt;

&lt;p&gt;Save it in &lt;code&gt;/var/www/html/pi.php&lt;/code&gt; or in
&lt;code&gt;$HOME/public_html/pi.php&lt;/code&gt;, if you have configured
&lt;code&gt;UserDir&lt;/code&gt; in &lt;code&gt;httpd.conf&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;In a browser load &lt;code&gt;http://localhost/pi.php&lt;/code&gt; or
&lt;code&gt;http://localhost/~yourname/pi.php&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This will show the PHP configuration values.&lt;/p&gt;

&lt;p&gt;To test php-fpm's built-in statistics, edit &lt;code&gt;httpd.conf&lt;/code&gt;
and uncomment the four lines of the &lt;code&gt;LocationMatch&lt;/code&gt;
section:&lt;/p&gt;

&lt;pre&gt;
  &amp;lt;LocationMatch "/status"&amp;gt;
    SetHandler php-fastcgi-virt
    Action php-fastcgi-virt /usr/sbin/php-fpm.fcgi virtual
  &amp;lt;/LocationMatch&amp;gt;
&lt;/pre&gt;

&lt;p&gt;Edit &lt;code&gt;/etc/php-fpm.conf&lt;/code&gt; and uncomment the line:&lt;/p&gt;

&lt;pre&gt;
  pm.status_path = /status
&lt;/pre&gt;

&lt;p&gt;Restart php-fpm and Apache:&lt;/p&gt;

&lt;pre&gt;
  service php-fpm restart
  service httpd restart
&lt;/pre&gt;

&lt;p&gt;Run some load on the system:&lt;/p&gt;

&lt;pre&gt;
  ab -c 10 -t 60 http://localhost/pi.php  
&lt;/pre&gt;

&lt;p&gt;Now &lt;code&gt;http://localhost/status&lt;/code&gt; gives you the status of the server:&lt;/p&gt;

&lt;pre&gt;
  pool:                 www
  process manager:      dynamic
  start time:           13/Mar/2012:14:25:53 -0700
  start since:          26
  accepted conn:        50001
  listen queue:         0
  max listen queue:     6
  listen queue len:     128
  idle processes:       2
  active processes:     1
  total processes:      3
  max active processes: 5
  max children reached: 1
&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;php-fpm.conf&lt;/code&gt; file documents other output formats
for the statistics.  It also shows the extensive functionality
available with php-fpm.&lt;/p&gt;

&lt;p&gt;Documentation on php-fpm is not ideal, but you can see some at &lt;a
href="http://php.net/manual/en/install.fpm.php"
&gt;http://php.net/manual/en/install.fpm.php&lt;/a&gt;.  The &lt;a
href="http://php-fpm.org" &gt;php-fpm.org&lt;/a&gt; site has more,
including a &lt;a href="http://groups.google.com/group/highload-php-en"
&gt;forum&lt;/a&gt; and &lt;a href="http://php-fpm.org/wiki/Main_Page" &gt;wiki&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;Php-fpm is commonly used in conjunction with the nginx webserver.
For this, you will need to compile nginx yourself.  Because php-fpm is
installed and managed separately from the webserver, the php-fpm RPM
will still be usable.  Now that Apache 2.4 has been released with
claims of improved performance, it will be interesting to see if web
server popularity swings back towards Apache.&lt;/p&gt;

&lt;p&gt;Finally, remember that the PHP RPMs on oss.oracle.com are for
testing purposes only. They are not supported.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/nlY3egHpBq8" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/php_fpm_fastcgi_process_manager</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/php_5_4_0_rpms</guid>
    <title>PHP 5.4.0 RPMs for 64bit Oracle Linux 5.x are available</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/0vWEd0slwD8/php_5_4_0_rpms</link>
        <pubDate>Tue, 13 Mar 2012 22:06:43 -0500</pubDate>
    <category>php</category>
    <category>feature</category>
    <category>install</category>
    <category>linux</category>
    <category>new</category>
    <category>php</category>
    <category>release</category>
    <category>rpm</category>
            <description>&lt;p&gt;I've published some vanilla PHP 5.4.0 RPMs to make new feature
testing easier for Oracle Linux 5.x 64 bit users.  The standard set of
RPMs is at &lt;a href="http://oss.oracle.com/projects/php/"
&gt;oss.oracle.com/projects/php&lt;/a&gt;.  The OCI8 extension is also
available (this requires the free Oracle Instant Client 11.2 from &lt;a
href="http://linux.oracle.com/" &gt;ULN&lt;/a&gt; or &lt;a
href="http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html"
&gt;OTN&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;Some of the features of PHP 5.4 are:&lt;/p&gt;

&lt;ul&gt;

  
  &lt;li&gt;&lt;p&gt;Improved memory usage and performance. Some impressive
preliminary reports of the benefits include:
&lt;a href="http://news.php.net/php.internals/57760" &gt;http://news.php.net/php.internals/57760&lt;/a&gt; and
&lt;a href="http://news.php.net/php.internals/57747" &gt;http://news.php.net/php.internals/57747&lt;/a&gt;.
    &lt;/p&gt;&lt;/li&gt;

    &lt;li&gt;&lt;p&gt;File Upload progress support is natively implemented.&lt;/p&gt;&lt;/li&gt;

    &lt;li&gt;&lt;p&gt;Support for Traits now allows code reuse:&lt;/p&gt;

&lt;pre&gt;
    trait t1 {
	function m1() { echo "hi"; }
	function m2() { echo "bye"; }
    }

    class my_c1 {
	use t1;
	/*...*/
    }

    class my_c2 extends c2 {
	use t1;
	/*...*/
    }
&lt;/pre&gt;
&lt;/li&gt;

&lt;li&gt;&lt;p&gt;A built-in HTTP server for development is included:&lt;/p&gt;
&lt;pre&gt;  php -S 127.0.0.1:8888
&lt;/pre&gt;
  &lt;/li&gt;
  
  &lt;li&gt;&lt;p&gt;Improvements were made to the interactive PHP shell (when PHP is
compiled with readline).&lt;/p&gt;
    &lt;/li&gt;
    
    &lt;li&gt;&lt;p&gt;A shortened array syntax was introduced: &lt;code&gt;$a = [1,2,3];&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;

    &lt;li&gt;&lt;p&gt;The default character set for several internal functions was changed to UTF-8.&lt;/p&gt;&lt;/li&gt;

    &lt;li&gt;&lt;p&gt;Support for multibyte languages is now configurable at run-time
instead of compile-time.&lt;/p&gt;
      &lt;/li&gt;
      
      &lt;li&gt;&lt;p&gt;The value echo tag "&lt;code&gt;&amp;lt;?=&lt;/code&gt;" is now always on.&lt;/p&gt;&lt;/li&gt;

      &lt;li&gt;&lt;p&gt;Binary number support was added.&lt;/p&gt;&lt;/li&gt;

      &lt;li&gt;&lt;p&gt;DTrace support was added.&lt;/p&gt;&lt;/li&gt;

      &lt;li&gt;&lt;p&gt;A new typehint indicates a function argument must be callable.&lt;/p&gt;&lt;/li&gt;

      &lt;li&gt;&lt;p&gt;Session entropy uses &lt;code&gt;/dev/urandom&lt;/code&gt; or
&lt;code&gt;/dev/arandom&lt;/code&gt; by default for extra security if either is
	present at compile time.&lt;/p&gt;&lt;/li&gt;

	&lt;li&gt;&lt;p&gt;Function call results can now be immediately dereferenced as arrays:
	  &lt;code&gt;foo()[0]&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;

	  &lt;li&gt;&lt;p&gt;Class members can be accessed on instantiation: &lt;code&gt;(new foo)-&gt;method()&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;
  
&lt;p&gt;For more changes see the &lt;a href="http://php.net/migration54"
&gt;migration documentation&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/0vWEd0slwD8" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/php_5_4_0_rpms</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/php_5_4_is_out</guid>
    <title>PHP 5.4 is out; your work begins now</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/Gqib2TqqBDk/php_5_4_is_out</link>
        <pubDate>Fri, 2 Mar 2012 01:57:20 -0600</pubDate>
    <category>php</category>
            <description>&lt;p&gt;Exciting news: PHP 5.4 is out.  Thanks to the release managers Stas
&amp;amp; David for making it happen.  The PHP code is syncing to mirrors.
PHP documentation will take a day or two to build &amp;amp; sync.  Take a
look when it reaches you. &lt;/p&gt;

&lt;p&gt;The &lt;a href="http://php.net/releases/5_4_0.php" &gt;announcement&lt;/a&gt;
lists some of the features that have changed.&lt;/p&gt;

&lt;p&gt;There is a current tidy up of documentation for new features and
migration happening.  There are some low priority bug fixes that are
waiting merge.  These came in during the extended release process and
were left out to avoid destabilizing the code.&lt;/p&gt;

&lt;p&gt;Some PECL extensions still need to make PHP 5.4 compatible
releases.  Rasmus &lt;a
href="http://twitter.com/#!/rasmus/status/175355782961963008" &gt;helped
out&lt;/a&gt; by making changes to some extension, but the package owners
need to bundle up releases.  Other extensions may need some work.&lt;/p&gt;

&lt;p&gt;XDebug is due for a compatible release &lt;a
href="http://twitter.com/#!/xdebug/status/175354232176787456"
&gt;soon&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;PHPUnit is said to be &lt;a
href="http://twitter.com/#!/s_bergmann/status/175360254773694464"
&gt;fine&lt;/a&gt; already.&lt;/p&gt;

&lt;p&gt;APC has at least one &lt;a
href="http://svn.php.net/viewvc?view=revision&amp;amp;revision=323587"
&gt;pending fix&lt;/a&gt; too, for the "?:" operator.&lt;/p&gt;

&lt;p&gt;In summary, PHP 5.4 is available and I expect this branch will stabilize
quickly.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/Gqib2TqqBDk" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/php_5_4_is_out</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/php_virtualbox_vm_has_been</guid>
    <title>PHP VirtualBox VM has been refreshed</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/_QEHzvYrP3Q/php_virtualbox_vm_has_been</link>
        <pubDate>Thu, 19 Jan 2012 13:19:05 -0600</pubDate>
    <category>php</category>
    <category>database</category>
    <category>oracle</category>
    <category>php</category>
    <category>virtualbox</category>
    <category>vm</category>
    <category>xe</category>
            <description>&lt;p&gt;While I was recently on summer vacation (yes, it is summer in half
the world), the VirtualBox VM for PHP was refreshed to a more recent
Zend Server/Oracle Linux/Oracle Database XE stack.&lt;/p&gt;

&lt;p&gt;I just pulled the VM down, imported it and had it booting and
serving PHP pages in a very few minutes.  VirtualBox really is
marvelous.  There is a link to download the VM near the foot of the &lt;a
href="http://www.oracle.com/technetwork/community/developer-vm/index.html"
&gt;Oracle Technology Network Developer VM page&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/_QEHzvYrP3Q" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/php_virtualbox_vm_has_been</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/php_5_3_9_rpms</guid>
    <title>PHP 5.3.9 RPMs Available for Testing</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/mrMAx-4yGOQ/php_5_3_9_rpms</link>
        <pubDate>Thu, 12 Jan 2012 20:06:44 -0600</pubDate>
    <category>php</category>
    <category>install</category>
    <category>php</category>
    <category>release</category>
            <description>&lt;p&gt;I've updated my relatively "vanilla" PHP 5 RPMs to 5.3.9 on &lt;a
href="http://oss.oracle.com/projects/php/"&gt;oss.oracle.com/projects/php&lt;/a&gt;.
They are built for Oracle Linux 5.7 (and RHEL 5.7).  I've included the
OCI8 extension for Oracle DB, of course.  The various MySQL extension
are there and use the mysqlnd driver, so installation doesn't require
any client-side MySQL libraries.  Note the PHP 5.3.9 RPMs are for
testing only.  For production users I recommend &lt;a
href="http://www.oracle.com/technetwork/topics/php/zend-server-096314.html"
&gt;Zend Server&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/mrMAx-4yGOQ" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/php_5_3_9_rpms</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/php_oci8_1_4_7</guid>
    <title>PHP OCI8 1.4.7 is available on PECL</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/AWDc5GoINWU/php_oci8_1_4_7</link>
        <pubDate>Wed, 11 Jan 2012 13:37:37 -0600</pubDate>
    <category>php</category>
    <category>php</category>
    <category>release</category>
            <description>&lt;p&gt;Following on the heels of the &lt;a
href="http://www.php.net/archive/2012.php#id2012-01-11-1" &gt;PHP
5.3.9&lt;/a&gt; release, I've bundled &lt;a href="http://pecl.php.net/package/oci8/1.4.7"
&gt;OCI8 1.4.7 for PECL&lt;/a&gt;.  The PECL OCI8 1.4.7 code is the same as
included in PHP 5.3.9 and can be used to update older PHP installations.  The release notes are &lt;a
href="http://pecl.php.net/package-changelog.php?package=oci8&amp;release=1.4.7"
&gt;here&lt;/a&gt;. There are several bug fixes; upgrading is recommended.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/AWDc5GoINWU" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/php_oci8_1_4_7</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/php_oci_password_change_ora</guid>
    <title>PHP oci_password_change() ORA-1017 gotcha with Oracle Database 11.2.0.3</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/uWK5GmRZlPE/php_oci_password_change_ora</link>
        <pubDate>Mon, 24 Oct 2011 18:27:45 -0500</pubDate>
    <category>php</category>
    <category>client</category>
    <category>instant</category>
    <category>password</category>
    <category>php</category>
    <category>upgrade</category>
            <description>&lt;p&gt;The Oracle &lt;a
href="http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html"
&gt;Instant Client&lt;/a&gt; 11.2.0.3 for Linux is now available on OTN.  I
know many users will upgrade sooner rather than later to get the
"latest and greatest" release.&lt;/p&gt;

&lt;p&gt;However, if your PHP application uses &lt;tt&gt;&lt;a
href="http://www.php.net/manual/en/function.oci-password-change.php"
&gt;oci_password_change&lt;/a&gt;&lt;/tt&gt; (or its old alias
&lt;tt&gt;ocipasswordchange&lt;/tt&gt;), you should upgrade the client libraries
(Instant or normal "full" client) and the Oracle Database version to
11.2.0.3 at the same time.  Otherwise &lt;tt&gt;oci_password_change&lt;/tt&gt;
will fail with the error "ORA-1017: invalid username/password".  If
you're not using &lt;tt&gt;oci_password_change&lt;/tt&gt; then this won't impact
you.&lt;/p&gt;

&lt;p&gt;Since the protocol change is in the Oracle libraries, the change is
not just limited PHP. Any C program using Oracle's Call Interface
"OCIPasswordChange" API to change passwords will also have the same
restrictions.  &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/uWK5GmRZlPE" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/php_oci_password_change_ora</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/scripting_language_related_sessions_at</guid>
    <title>Scripting Language Related Sessions at Oracle OpenWorld and JavaOne, October 2011 </title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/ziyua5EiiaQ/scripting_language_related_sessions_at</link>
        <pubDate>Mon, 26 Sep 2011 23:50:29 -0500</pubDate>
    <category>php</category>
    <category>conference</category>
    <category>development</category>
    <category>javaone</category>
    <category>language</category>
    <category>oow</category>
    <category>openworld</category>
    <category>oracle</category>
    <category>perl</category>
    <category>php</category>
    <category>programming</category>
    <category>python</category>
    <category>rails</category>
    <category>ruby</category>
    <category>scripting</category>
    <category>sessions</category>
    <category>tuxedo</category>
            <description>&lt;p&gt;Oracle OpenWorld and JavaOne conferences are happening in San
Francisco next week. It will be a busy and exciting time.&lt;/p&gt;

&lt;p&gt;First, here's a shout out: For me the conference kicks off on Sunday morning.
Marcelle Kratochvil from Piction (heavy users of PHP and
Oracle DB) is hosting the inaugural &lt;strong&gt;Unstructured Data with Multimedia
SIG&lt;/strong&gt; for Oracle Database and MySQL database (&lt;a
href="https://oracleus.wingateweb.com/scheduler/modifySession.do?SESSION_ID=32440"
&gt;32440&lt;/a&gt;) Sunday 9:00 am in Moscone West room 2011.&lt;/p&gt;

&lt;p&gt;Below are some of the scripting and related
sessions happening during the week.
&lt;/p&gt;
&lt;h3&gt;Exhibition Hall&lt;/h3&gt;

&lt;p&gt;During the Exhibition Hall hours, come and talk to us at the
&lt;strong&gt;Database Access Services and APIs&lt;/strong&gt; booth.  This year
we're in Moscone South, Left SL-067.  The &lt;strong&gt;Tuxedo&lt;/strong&gt; application server
booth is Moscone South, Right - SR-202.  At JavaOne look out for the
&lt;strong&gt;NetBeans&lt;/strong&gt; booth, Hilton San Francisco - HHJ-023.  &lt;/p&gt;

&lt;h3&gt;Scripting Sessions, Birds-of-a-Feather Meetings, and Hands-on-Labs at OOW&lt;/h3&gt;

&lt;ul&gt;

  &lt;li&gt;The Oracle Tuxedo team has scripting language support in their powerful application server environment:&lt;br&gt;
&lt;strong&gt;High-Performance Web Applications with
C/C++/PHP/Python&lt;/strong&gt; (&lt;a
href="https://oracleus.wingateweb.com/scheduler/modifySession.do?SESSION_ID=15705"&gt;15705&lt;/a&gt;)
&lt;br&gt;&lt;i&gt;Monday, 05:00 PM, Moscone South - 300&lt;/i&gt; &lt;/li&gt;

&lt;li&gt; This year we are running introductory Hands-on Lab sessions
for three languages concurrently.  Come along and choose which
language you'd like to dip your toes into: &lt;br&gt;&lt;strong&gt;Develop and
Deploy High-Performance Web 2.0 PHP, Ruby, or Python
Applications&lt;/strong&gt; (&lt;a
href="https://oracleus.wingateweb.com/scheduler/modifySession.do?SESSION_ID=30082"
&gt;30082&lt;/a&gt;)
  &lt;br&gt;&lt;i&gt;Monday, 05:00 PM, Marriott Marquis - Salon 10/11&lt;/i&gt; &lt;/li&gt;

  &lt;li&gt;Come and ask questions at the round table Birds-of-a-Feather session:&lt;br&gt;
&lt;strong&gt;Meet the Oracle Database Clients Developers: C, C++, PHP,
Python, Ruby, and Perl&lt;/strong&gt; (&lt;a
href="https://oracleus.wingateweb.com/scheduler/modifySession.do?SESSION_ID=26240"&gt;26240&lt;/a&gt;)
    &lt;br&gt;&lt;i&gt;Monday, 07:30 PM, Marriott Marquis - Salon 8&lt;/i&gt; &lt;/li&gt;

&lt;li&gt; My overview and state-of-the-nation session is: &lt;br&gt;&lt;strong&gt;PHP, Ruby, Python, and Perl: Develop and Deploy
Mission-Critical Apps with Oracle Database 11g&lt;/strong&gt; (&lt;a
href="https://oracleus.wingateweb.com/scheduler/modifySession.do?SESSION_ID=14704"&gt;14704&lt;/a&gt;)
&lt;br&gt;&lt;i&gt;Wednesday, 11:45 AM, Marriott Marquis - Salon 8&lt;/i&gt; &lt;/li&gt;

&lt;li&gt;The Tuxedo team Hands-on-Lab lets you code in C/C++/PHP/Python/Ruby: &lt;br&gt;&lt;strong&gt;Develop High-Performance, Service-Oriented C/C++ Applications for Oracle Exalogic&lt;/strong&gt; (&lt;a href="https://oracleus.wingateweb.com/scheduler/modifySession.do?SESSION_ID=31120"&gt;31120&lt;/a&gt;)
&lt;br&gt;&lt;i&gt;Thursday, 12:00 PM, Marriott Marquis - Salon 3/4&lt;/i&gt;&lt;/li&gt;

&lt;li&gt;Raimonds Simanovskis, maintainer of the Rails adapter for Oracle
is giving a session: &lt;br&gt;&lt;strong&gt;Extending Oracle E-Business Suite with
Ruby on Rails&lt;/strong&gt; (&lt;a
href="https://oracleus.wingateweb.com/scheduler/modifySession.do?SESSION_ID=8604"&gt;8604&lt;/a&gt;)
&lt;br&gt;&lt;i&gt;Thursday, 03:00 PM, Moscone West - 2002/2004&lt;/i&gt; &lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Several other sessions discuss topics that scripting language devotees will find invaluable:&lt;/p&gt;

&lt;ul&gt;

&lt;li&gt;
  &lt;strong&gt;Build, Deploy, and Troubleshoot Highly Performant, Highly Available Apps with Oracle Database&lt;/strong&gt; (&lt;a href="https://oracleus.wingateweb.com/scheduler/modifySession.do?SESSION_ID=14703" &gt;14703&lt;/a&gt;)
  &lt;br&gt;&lt;i&gt;Wednesday, 05:00 PM, Moscone South - 303&lt;/i&gt;
&lt;/li&gt;

&lt;li&gt;&lt;strong&gt;Net Services: Best Practices for Performance, Scalability, and High Availability&lt;/strong&gt; (&lt;a href="https://oracleus.wingateweb.com/scheduler/modifySession.do?SESSION_ID=14345"&gt;14345&lt;/a&gt;)
&lt;br&gt;&lt;i&gt;Wednesday, 01:15 PM, Moscone South - 303&lt;/i&gt;
&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Also check out the full Oracle Tuxedo application server schedule &lt;a
href="https://blogs.oracle.com/Tuxedo/entry/oracle_tuxedo_at_oow_2011"
&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Scripting at JavaOne&lt;/h3&gt;
&lt;p&gt;Over in the concurrent JavaOne conference there are several scripting
sessions driven by San Francisco's &lt;a
href="http://www.engineyard.com/blog/2011/its-all-about-jruby/"&gt;EngineYard&lt;/a&gt;.  This year they have JRuby sessions

but with their &lt;a href="http://www.engineyard.com/orchestra" &gt;recent
aquisition&lt;/a&gt; of PHP technnology, I hope they'll have more on PHP
in one of the OOW streams next year:&lt;/p&gt;


&lt;ul&gt;

  &lt;li&gt;&lt;strong&gt;Accelerate Your Business and Aim for the Cloud with Java and
  JRuby&lt;/strong&gt; (&lt;a
  href="https://oracleus.wingateweb.com/scheduler/modifySession.do?SESSION_ID=25284"&gt;25284&lt;/a&gt;)&lt;br&gt;Wednesday, 03:00 PM, Parc 55 - Embarcadero&lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;From Java to Rails: Techniques for Adding Ruby Agility to Your
  Java Web Stack&lt;/strong&gt; (&lt;a
  href="https://oracleus.wingateweb.com/scheduler/modifySession.do?SESSION_ID=24582"&gt;24582&lt;/a&gt;)&lt;br&gt;Monday, 05:30 PM, Parc 55 - Market Street&lt;/li&gt;
			
  &lt;li&gt;&lt;strong&gt;Real-World JRuby&lt;/strong&gt; (&lt;a
  href="https://oracleus.wingateweb.com/scheduler/modifySession.do?SESSION_ID=23600"&gt;23600&lt;/a&gt;)&lt;br&gt;Wednesday, 04:30 PM, Parc 55 - Market Street&lt;/li&gt;
			
  &lt;li&gt;&lt;strong&gt;Script Bowl 2011: A Scripting Languages Shootout&lt;/strong&gt; (&lt;a
  href="https://oracleus.wingateweb.com/scheduler/modifySession.do?SESSION_ID=22060"&gt;22060&lt;/a&gt;)&lt;br&gt;Wednesday, 08:30 AM, Hilton San Francisco - Grand Ballroom B&lt;/li&gt;

&lt;/ul&gt;


&lt;p&gt;

Also keep an eye out for the various NetBeans IDE sessions and demo booth.&lt;/p&gt;
&lt;h3&gt;Linux&lt;/h3&gt;

&lt;p&gt;Check out the four pages of &lt;a
href="http://www.oracle.com/openworld/oow11-focuson-linux-483706.pdf"
&gt;Focus on Linux&lt;/a&gt; sessions and events.&lt;/p&gt;

&lt;h3&gt;MySQL&lt;/h3&gt;
&lt;p&gt;There is a veritable plethora of MySQL content - four pages of
sessions and activites are listed in the &lt;a href="
http://www.oracle.com/openworld/oow11-focuson-mysql-486114.pdf"&gt;Oracle
Focus on MySQL&lt;/a&gt;.  Don't forget the &lt;strong&gt;MySQL Community Reception&lt;/strong&gt;
Tuesday 7:00pm - 9:00pm in the Marriott Marquis - Foothill G.&lt;/p&gt;

&lt;/p&gt;

&lt;p&gt;Having started this post with a shout out, let me end with one to
Bill Karwin, who was instrumental in getting PHP's Zend Framework off
the ground.  He is talking about &lt;a
href="https://oracleus.wingateweb.com/scheduler/modifySession.do?SESSION_ID=29101"&gt;MaatKit&lt;/a&gt;
and &lt;a
href="https://oracleus.wingateweb.com/scheduler/modifySession.do?SESSION_ID=29081"&gt;SQL
Injection&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Update: Ligaya Turmelle, well known in the PHP community, confirmed overnight that despite a recent job move she is still on track to present her  &lt;a
href="https://oracleus.wingateweb.com/scheduler/modifySession.do?SESSION_ID=16040"&gt;MySQL Performance Tuning&lt;/a&gt; talk (16040).&lt;/p&gt;


&lt;p&gt;You can search the OOW session catalog &lt;a
href="https://oracleus.wingateweb.com/scheduler/eventcatalog/eventCatalog.do"
&gt;here&lt;/a&gt; and the JavaOne session catalog &lt;a href="https://oracleus.wingateweb.com/scheduler/eventcatalog/eventCatalogJavaOne.do" &gt;here&lt;/a&gt;.
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/ziyua5EiiaQ" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/scripting_language_related_sessions_at</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/oracle_resources_for_php</guid>
    <title>Oracle Resources for PHP</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/cTDdrbpPtaM/oracle_resources_for_php</link>
        <pubDate>Wed, 15 Jun 2011 11:58:56 -0500</pubDate>
    <category>php</category>
    <category>application</category>
    <category>bdb</category>
    <category>berkeley</category>
    <category>cache</category>
    <category>database</category>
    <category>db</category>
    <category>ide</category>
    <category>linux</category>
    <category>mysql</category>
    <category>netbeans</category>
    <category>oracle</category>
    <category>otn</category>
    <category>php</category>
    <category>server</category>
    <category>timesten</category>
    <category>tuxedo</category>
    <category>virtualization</category>
            <description>&lt;p&gt;Here are some key resources for working with &lt;a class="highlight"
href="http://php.net/"&gt;PHP&lt;/a&gt; and Oracle technologies.&lt;/p&gt;

&lt;ul&gt;
&lt;p&gt;&lt;li&gt;&lt;b&gt;Overall Links&lt;/b&gt;&lt;/p&gt;


&lt;p&gt;&lt;b&gt;Oracle :&lt;/b&gt;  &lt;a class="highlight" href="http://www.oracle.com/technetwork/index.html" &gt;Oracle Technology Network (OTN)&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;b&gt;Homepage : &lt;/b&gt; &lt;a class="highlight" href="http://otn.oracle.com/php"&gt;The PHP Developer Center&lt;/a&gt;  -- downloads, how-tos, sample code and discussion forums brought to you by OTN.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Read : &lt;/b&gt; &lt;a class="highlight" href="http://www.oracle.com/technetwork/articles/dsl/index.html" &gt;PHP Articles&lt;/a&gt;  -- a collection of informative articles on OTN.&lt;/p&gt;
	    
&lt;p&gt;&lt;b&gt;Technology : &lt;/b&gt;&lt;a class="highlight" href="http://www.oracle.com/technology/software/index.html"&gt;Download&lt;/a&gt;  the newest versions of other software in Oracle's Technology Stack. &lt;a href="http://www.oracle.com/technetwork/topics/dotnet/whatsnew/application-development-11g-whitepa-132847.pdf" &gt;Read&lt;/a&gt;  about other Oracle application development tools.&lt;/p&gt;


&lt;li&gt;
&lt;a name="php"&gt;&lt;/a&gt;

&lt;p&gt;&lt;b&gt;PHP Oracle Database Extension : &lt;/b&gt;&lt;a class="highlight" href="http://pecl.php.net/package/oci8"&gt;OCI8&lt;/a&gt;  is the most available
and scalable PHP adapter for the Oracle database. It is included with PHP, and is also separately downloadable for upgrading older PHP
releases. OCI8 works with PHP 4 and PHP 5, and will compile with Oracle 9&lt;i&gt;i&lt;/i&gt;R2, 10&lt;i&gt;g&lt;/i&gt; and 11&lt;i&gt;g&lt;/i&gt; client libraries. Oracle's standard
cross-version compatibility and connectivity is applicable, so OCI8 can connect to older or newer databases, locally or
remotely.  The latest OCI8 release includes support for Oracle Database 11&lt;i&gt;g&lt;/i&gt; Database Resident Connection Pooling (DRCP), and for Fast
Application Notification (FAN) [&lt;a class="highlight" href="http://www.oracle.com/technetwork/topics/php/php-scalability-ha-twp-128842.pdf"&gt;whitepaper
here&lt;/a&gt;], and also has support for Oracle's authentication and end-to-end tracing meta data attributes [&lt;a class="highlight"
href="http://www.oracle.com/technetwork/articles/dsl/php-web-auditing-171451.html"&gt;article here&lt;/a&gt;].  These
features improve scalability and availabilty of the OCI8 extension.&lt;/p&gt;

&lt;p&gt;The OCI8 extension can also be used with the &lt;a class="highlight" href="http://www.oracle.com/technetwork/database/options/imdb-cache/index.html" &gt;Oracle In-Memory Database Cache&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;Book : &lt;a class="highlight"
href="http://www.oracle.com/technetwork/topics/php/underground-php-oracle-manual-098250.html"&gt;The Underground PHP &amp;amp; Oracle
Manual&lt;/a&gt; -- the definitive, free guide to using PHP with Oracle Database.&lt;/p&gt;

&lt;p&gt;Tutorial : &lt;a class="highlight"
href="https://apex.oracle.com/pls/apex/f?p=44785:24:7125334043146::NO:24:P24_CONTENT_ID,P24_PREV_PAGE:5125,29"&gt;Oracle &amp;amp; PHP tutorials&lt;/a&gt;  -- step by
step &lt;a class="highlight" href="http://www.oracle.com/technetwork/tutorials/index.html" &gt;Oracle Learning Library&lt;/a&gt;  tutorials for using PHP with Oracle. (Free OTN &lt;a class="highlight" href="https://myprofile.oracle.com/EndUser/faces/profile/createUser.jspx"&gt;login&lt;/a&gt;  required) &lt;/p&gt;


&lt;p&gt;Read : &lt;a class="highlight" href="http://www.oracle.com/technetwork/topics/php/php-scalability-ha-twp-128842.pdf"&gt;PHP &amp;amp; High Scalability&lt;/a&gt;  --
covers enabling DRCP and FAN for PHP applications.&lt;/p&gt;

&lt;p&gt;Read : &lt;a class="highlight" href="http://www.oracle.com/technetwork/articles/dsl/php-web-auditing-171451.html" &gt;PHP Web Auditing, Authorization and
Monitoring with Oracle Database&lt;/a&gt;  -- learn how to audit individual web users, automatically apply rules to
individual web users to restrict data access, and monitor and trace database usage per application user.&lt;/p&gt;

&lt;p&gt;Forum : &lt;a class="highlight" href="http://forums.oracle.com/forums/forum.jspa?forumID=178"&gt;The Oracle
&amp;amp; PHP forum&lt;/a&gt;  -- technical discussion forum for using PHP with Oracle.&lt;/p&gt;

&lt;p&gt;Blog : &lt;a class="highlight" href="https://blogs.oracle.com/opal/"&gt;PHP and Oracle: Christopher Jones&lt;/a&gt;  -- The latest news on PHP and Oracle.&lt;/p&gt;


&lt;li&gt;
&lt;a name="xe"&gt;&lt;/a&gt;

&lt;p&gt; &lt;b&gt;Database : &lt;/b&gt;&lt;a class="highlight" href="http://www.oracle.com/technetwork/database/express-edition/overview/index.html"&gt;Oracle Express Edition Database&lt;/a&gt;
 -- an entry-level, small-footprint database based on the standard Oracle
Database code base that's &lt;b&gt;free to develop, deploy, and distribute; fast to download; and simple to administer.&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;PHP OCI8 works with Oracle Database XE the same way it works with the other editions of Oracle Database.&lt;/p&gt;

&lt;p&gt;Oracle Database XE is a great starter database for:&lt;/p&gt;

&lt;ul&gt;

&lt;li&gt; &lt;strong&gt;Developers&lt;/strong&gt; working on PHP, Python, Ruby, Java, .Net and other open source applications.  &lt;/li&gt;

&lt;li&gt; &lt;strong&gt;DBAs&lt;/strong&gt; who need a free, starter database for training and deployment &lt;/li&gt;

&lt;li&gt; &lt;strong&gt;Independent Software Vendors (ISVs) and hardware vendors&lt;/strong&gt; who want a starter database to distribute free of
charge &lt;/li&gt;

&lt;li&gt; &lt;strong&gt;Educational institutions and students&lt;/strong&gt; who need a free database for their curriculum &lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt; &lt;a class="highlight" href="http://www.oracle.com/technetwork/database/express-edition/downloads/index.html"&gt;Install Now!&lt;/a&gt; &lt;/p&gt;


&lt;li&gt;
&lt;a name="mysql"&gt;&lt;/a&gt;

&lt;p&gt;&lt;b&gt;Database : &lt;/b&gt;&lt;a class="highlight" href="http://www.mysql.com/"&gt;MySQL&lt;/a&gt;  -- The world's most popular open source
database. MySQL Community Edition is the freely downloadable version. Commercial customers have the flexibility of choosing from multiple editions to
meet specific business and technical requirements. Also available for free is the MySQL Workbench for SQL Authoring, System Administration, and schema
modeling.&lt;/p&gt;

&lt;p&gt;Recent additions to MySQL include semi synchronous replication, direct memcached-to-InnoDB access, multi-threaded replication, and enhanced
partitioning.  See &lt;a class="highlight" href="http://dev.mysql.com/tech-resources/articles/whats-new-in-mysql-5.6.html" &gt;What's new in MySQL 5.6&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;PHP's mysqli or PDO_mysql extensions can be used to access MySQL.&lt;/p&gt;

&lt;p&gt;Check out the new &lt;a class="highlight" href="http://pecl.php.net/mysqlnd_qc"
&gt;Query Cache plugin&lt;/a&gt; documented &lt;a class="highlight" href="http://php.net/mysqlnd_qc"
&gt;here&lt;/a&gt; and the &lt;a class="highlight" href="http://pecl.php.net/mysqlnd_ms"
&gt;Replication and Load-Balancing plugin&lt;/a&gt; for master-slave-splitting, documented
[&lt;a class="highlight" href="http://php.net/mysqlnd_ms" &gt;here&lt;/a&gt;].&lt;/p&gt;

&lt;p&gt;Homepage : &lt;a class="highlight" href="http://dev.mysql.com/usingmysql/php/" &gt;Using MySQL With PHP&lt;/a&gt;  -- Articles and downloads&lt;/p&gt;

&lt;p&gt;Forum : &lt;a class="highlight" href="http://forums.mysql.com/list.php?52" &gt;PHP and MySQL forum&lt;/a&gt;  -- The place to ask questions&lt;/p&gt;

&lt;p&gt;Blog : &lt;a class="highlight" href="http://planet.mysql.com/" &gt;Planet MySQL&lt;/a&gt;  -- The latest MySQL news from the community&lt;/p&gt;

&lt;p&gt;Blog : &lt;a class="highlight" href="http://schlueters.de/blog/" &gt;Johannes Schlüter&lt;/a&gt;  -- A member of the MySQL connector team and the current PHP Release Master.&lt;/p&gt;

&lt;p&gt;Blog : &lt;a class="highlight" href="http://www.khankennels.com/blog/" &gt;Me Talking Out Loud&lt;/a&gt;  -- Ligaya Turmelle, a
member of MySQL Support. (and contributer to &lt;a class="highlight" href="http://www.amazon.com/PHP-Anthology-Essential-Tricks-Hacks/dp/0975841998"&gt;The
PHP Anthology: 101 Essential Tips, Tricks &amp; Hacks&lt;/a&gt;) &lt;/p&gt;

&lt;p&gt;Blog : &lt;a class="highlight" href="http://blog.ulf-wendel.de/?p=308" &gt;Internet Super Hero&lt;/a&gt;  -- Ulf Wendel, a member of the MySQL connector team.&lt;/p&gt;

&lt;p&gt;Books : Many!  Including &lt;a class="highlight" href="http://www.amazon.com/PHP-MySQL-Web-Development-4th/dp/0672329166/" &gt;PHP and MySQL Web Development&lt;/a&gt; and &lt;a class="highlight" href="http://www.amazon.com/Web-Database-Applications-PHP-MySQL/dp/0596000413" &gt;Web Database
Applications with PHP &amp; MySQL&lt;/a&gt;  and &lt;a class="highlight"
href="http://www.amazon.com/Learning-MySQL-Step-Step-Database-Driven/dp/0596514018/ref=pd_sim_b_2" &gt;Learning PHP &amp; MySQL: Step-by-Step Guide to
Creating Database-Driven Web Sites&lt;/a&gt; &lt;/p&gt;

&lt;p&gt; &lt;a class="highlight" href="http://www.mysql.com/downloads/"&gt;Install Now!&lt;/a&gt; &lt;/p&gt;


&lt;li&gt;
&lt;a name="bdb"&gt;&lt;/a&gt;

&lt;p&gt;&lt;b&gt;Database : &lt;/b&gt;&lt;a class="highlight" href="http://www.oracle.com/technetwork/database/berkeleydb/overview/index.html"&gt;Oracle
Berkeley DB 11&lt;i&gt;g&lt;/i&gt;&lt;/a&gt;  -- provides the complex data management features found in
enterprise class databases. These facilities include high throughput, low-latency reads, non-blocking writes, high concurrency, data
scalability, in-memory caching, ACID transactions, automatic and catastrophic recovery when the application, system or hardware fails,
high availability and replication in an application configurable package. Simply configure the library and use the particular features
available to satisfy your particular application needs. Berkeley DB can be configured to address any application need from the hand-held
device to the datacenter, from a local storage solution to a world-wide distributed one, from kilobytes to petabytes. &lt;/p&gt;

&lt;p&gt;Berkeley DB's &lt;a
href="http://www.oracle.com/technetwork/database/berkeleydb/overview/sql-160887.html"
&gt;SQL API&lt;/a&gt; allows PHP's sqlite3 and PDO_sqlite extensions to be
used.&lt;/p&gt;
  
&lt;p&gt;Berkeley DB also includes source code for a php_db4 extension.&lt;/p&gt;

&lt;p&gt; &lt;a class="highlight" href="http://www.oracle.com/technetwork/database/berkeleydb/downloads/index.html"&gt;Install Now!&lt;/a&gt; &lt;/p&gt; 


&lt;li&gt;
&lt;a name="netbeans"&gt;&lt;/a&gt;

&lt;p&gt;&lt;b&gt;IDE : &lt;/b&gt;&lt;a class="highlight" href="http://netbeans.org/"&gt;NetBeans&lt;/a&gt;  --  lets you develop desktop, mobile and web
applications using Java, PHP, C/C++ and more.  Runs on Windows, Linux, Mac OS X and Solaris. NetBeans IDE is open-source and free.&lt;/p&gt;

&lt;p&gt;Understand: &lt;a class="highlight" href="http://netbeans.org/features/php/" &gt;NetBeans PHP features&lt;/a&gt;  -- All the great features that NetBeans has for PHP developers&lt;/p&gt;

&lt;p&gt;Learn: &lt;a class="highlight" href="http://netbeans.org/kb/trails/php.html" &gt;NetBeans PHP Learning Trail&lt;/a&gt;  -- the best way to learn how to use NetBeans&lt;/p&gt;

&lt;p&gt; &lt;a class="highlight" href="http://netbeans.org/downloads/"&gt;Install Now!&lt;/a&gt; &lt;/p&gt;


&lt;li&gt;
&lt;a name="vbox"&gt;&lt;/a&gt;

&lt;p&gt;&lt;b&gt;Virtualize : &lt;/b&gt;&lt;a class="highlight" href="http://www.oracle.com/technetwork/server-storage/virtualbox/overview/index.html"&gt;Oracle VM
VirtualBox&lt;/a&gt;  -- powerful Cross-platform Virtualization Software for x86-based systems.  "Cross-platform"
means that it installs on Windows, Linux, Mac OS X and Solaris x86 computers. And "Virtualization Software" means that you can create
and run multiple Virtual Machines, running different operating systems, on the same computer at the same time. For example, you can
run Windows and Linux on your Mac, run Linux and Solaris on your Windows PC, or run Windows on your Linux systems.  &lt;/p&gt;


&lt;p&gt; Oracle VM VirtualBox is available as Open Source or pre-built Binaries for Windows, Linux, Mac OS X and
Solaris.  &lt;/p&gt;

&lt;p&gt;OTN hosts some &lt;a class="highlight" href="http://www.oracle.com/technetwork/community/developer-vm/index.html" &gt;pre-built Developer VMs&lt;/a&gt; , including an Oracle Tuxedo Web Application Server VM showing PHP support.  There is also a Zend Server VM for PHP created by Zend.  &lt;a class="highlight"
href="http://www.oracle.com/technetwork/topics/php/zend-server-096314.html"&gt;Zend Server&lt;/a&gt;  is a complete,
Oracle-enabled, enterprise-ready Web Application Server for running and managing PHP applications that require a high level of reliability,
performance and security.  Zend Server is available in community and supported editions.&lt;/p&gt;

&lt;p&gt; &lt;a class="highlight" href="http://www.virtualbox.org/wiki/Downloads"&gt; Install Now!&lt;/a&gt; &lt;/p&gt;


&lt;li&gt;
&lt;a name="linux"&gt;&lt;/a&gt;

&lt;p&gt;&lt;b&gt;Operating system : &lt;/b&gt;&lt;a class="highlight" href="http://www.oracle.com/us/technologies/linux/index.html"&gt;Oracle Linux&lt;/a&gt;  -- free to download and distribute.  As one of the most widely deployed operating systems today, Linux is increasingly being
adopted for cloud-based solutions. Oracle Linux is the most complete and integrated solution available and delivers higher performance and better
reliability at up to 7 times lower cost than Red Hat. &lt;a class="highlight" href="http://www.oracle.com/us/technologies/linux/competitive-335546.html" &gt;Why Choose Oracle
Linux over Red Hat Linux?&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;Oracle Linux 5.6 and 6 introduced PHP 5.3 packages.  Subscribers to the Unbreakable Linux Network have access to an additional
pre-built PHP OCI8 RPM, and also direct access to an RPM for installing  &lt;a class="highlight"
href="http://www.oracle.com/technetwork/topics/php/zend-server-096314.html"&gt;Zend Server&lt;/a&gt; .&lt;/p&gt;

&lt;p&gt;Users of older Linux 5 releases can get PHP 5.3 RPMs from &lt;a class="highlight" href="http://oss.oracle.com/projects/php/"&gt;oss.oracle.com&lt;/a&gt; .&lt;/p&gt;

&lt;p&gt; &lt;a class="highlight" href="https://linux.oracle.com"&gt;Install Now!&lt;/a&gt; &lt;/p&gt;


&lt;li&gt;
&lt;a name="tuxedo"&gt;&lt;/a&gt;

&lt;p&gt;&lt;b&gt;Application Server : &lt;/b&gt;&lt;a class="highlight" href="http://www.oracle.com/technetwork/middleware/tuxedo/overview/index.html"&gt;Oracle Tuxedo&lt;/a&gt;
 -- provides a robust, grid enabled platform for developing enterprise applications.  It provides mainframe-class scale
and performance on open, distributed systems for software written in C, C++, COBOL, PHP, Python and Ruby.  Oracle Tuxedo provides cost-effective
reliability, extreme scalability and throughput of hundreds of thousands of transactions per second.  Functionality like Web services, SCA programming
model, metadata driven application development make it simple to develop and integrate applications written in many programming languages.  &lt;/p&gt;

&lt;p&gt;PHP applications can be hosted on the Tuxedo platform without requiring any code changes and can leverage high availability, scalability and
integration capabilities.&lt;/p&gt;

&lt;p&gt;The whitepaper &lt;a href="http://www.oracle.com/technetwork/middleware/tuxedo/tuxedo-dynamic-langs-twp-401471.pdf"&gt;Oracle Tuxedo - An Enterprise
Platform for Dynamic Languages&lt;/a&gt; explains the architecture and features.  A &lt;a
href="http://www.oracle.com/technetwork/middleware/tuxedo/downloads/index.html"&gt;Tuxedo Demo VM&lt;/a&gt; for VirtualBox is available for immediate
testing.&lt;/p&gt;

&lt;p&gt; &lt;a class="highlight" href="http://www.oracle.com/technetwork/middleware/tuxedo/downloads/index.html"&gt;Install Now!&lt;/a&gt; &lt;/p&gt;

&lt;li&gt;
&lt;a name="ic"&gt;&lt;/a&gt;

&lt;p&gt;&lt;b&gt;Client Libraries : &lt;/b&gt;&lt;a class="highlight" href="http://www.oracle.com/technetwork/database/features/instant-client/index-100365.html"&gt;Oracle Instant
Client&lt;/a&gt;  -- a small footprint set of libraries that allows applications and tools to connect to an existing Oracle
Database.  Oracle OCI, OCCI, Pro*C, ODBC, and JDBC applications work without modification.&lt;/p&gt;

&lt;p&gt;The PHP OCI8 extension can be built with Oracle Instant Client to connect to a remote database.&lt;/p&gt;

&lt;p&gt;Instant Client is provided under a separate OTN Development and Distribution License for Instant Client that
allows most licensees to download, redistribute, and deploy in production environments, without charge. &lt;/p&gt;

&lt;p&gt; &lt;a class="highlight" href="http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html"&gt;Install Now!&lt;/a&gt; &lt;/p&gt;


&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/cTDdrbpPtaM" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/oracle_resources_for_php</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/mid_conference_wrap_up</guid>
    <title>Mid conference wrap up</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/2d14SqJ4SwI/mid_conference_wrap_up</link>
        <pubDate>Tue, 24 May 2011 12:51:10 -0500</pubDate>
    <category>php</category>
    <category>conference</category>
    <category>dpc11</category>
    <category>php</category>
    <category>tek11</category>
            <description>&lt;p&gt;In a nicer section of the RAI conference center than in previous
years I've attended, the Dutch PHP conference last week was as professionally
organized as ever by &lt;a href="http://www.ibuildings.nl/"&gt;ibuildings&lt;/a&gt;.  The weather was kind too, having cleared up from a
previous blustery days I'd spent south of Amsterdam with my
parents.&lt;/p&gt;

&lt;p&gt;My talk had a big audience, which stayed the course.  Unfortunately
my abstract was condensed down in the small printed
name-tag/program-guide, which contributed to some polarized reviews.
Some really liked the Oracle-PHP overview section, while others were
not expecting it.&lt;/p&gt;

&lt;p&gt;In a few minutes I'm heading off to Chicago for &lt;a
href="http://tek11.phparch.com/" &gt;php|tek&lt;/a&gt;.  My &lt;a
href="http://tek11.phparch.com/talk-synopses/#Developing-and-Deploying-High-Performance-PHP-Applications"
&gt;talk&lt;/a&gt; is based on the presentation I gave at DPC but I'll cut down
the "state of the Oracle-PHP nation" section down by a couple of
slides (taking it to about 8 minutes worth).  I'll also rejig which
advanced Oracle techniques are covered in the main part of the talk.
My code snippets and screen captures didn't satisfy DPC audience's
thirst for knowledge so I'm adding back (some) live demos - hey, why
not live dangerously!?&lt;/p&gt;

&lt;p&gt;Since I'm at the conference for the full three session days,
there'll be plenty of time for you to pin me down with your questions.
And if you have MySQL questions, Ligaya Turmelle is the person to talk
to.  Her tutorial is in session as I write.  She's also talking about
schema normalization on Wednesday afternoon.&lt;/p&gt;

&lt;p&gt;At php|tek make sure you come along to the Uncon after hours on
Wednesday and find all the latest and hot topics.  Oracle is
sponsoring it this year.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/2d14SqJ4SwI" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/mid_conference_wrap_up</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/oracle_at_dutch_php_conference</guid>
    <title>Oracle at the Dutch PHP Conference &amp; php|tek</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/TqObBVVQH9c/oracle_at_dutch_php_conference</link>
        <pubDate>Sat, 14 May 2011 11:15:08 -0500</pubDate>
    <category>php</category>
    <category>conference</category>
    <category>oracle</category>
    <category>php</category>
            <description>&lt;p&gt;I'm off to Amsterdam to talk at the &lt;a href="http://www.phpconference.nl/"&gt;Dutch PHP Conference&lt;/a&gt;.  After that it's on to Chicago for &lt;a href="http://tek11.phparch.com/"&gt;php|tek&lt;/a&gt;. &lt;/p&gt; 

&lt;p&gt;See you there!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/TqObBVVQH9c" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/oracle_at_dutch_php_conference</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/oracle_tuxedo_a_new_way</guid>
    <title>Oracle Tuxedo: A New way to Run PHP Applications</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/WZUSbdYrzww/oracle_tuxedo_a_new_way</link>
        <pubDate>Thu, 12 May 2011 16:08:57 -0500</pubDate>
    <category>php</category>
    <category>application</category>
    <category>availability</category>
    <category>php</category>
    <category>scalability</category>
    <category>server</category>
    <category>tuxedo</category>
            <description>&lt;p&gt;The Oracle Tuxedo team have posted an Oracle Tuxedo 11.1.1.2 Web
Application Server Demo for PHP.  It is a VirtualBox VM so you can
immediately test it out.  The free VM is available from OTN's &lt;a
href="http://www.oracle.com/technetwork/community/developer-vm/index.html"
&gt;Pre-Built Developer VMs&lt;/a&gt; page.&lt;/p&gt;

&lt;p&gt;Oracle Tuxedo provides a scalable and highly available mid tier
platform capable of managing and integrating heterogeneous
applications.  &lt;a
href="http://www.oracle.com/technetwork/middleware/tuxedo/overview/tuxedo-datasheet-130066.pdf"
&gt;This overview datasheet&lt;/a&gt; explains its capabilities: "&lt;i&gt;Oracle
Tuxedo provides a service-oriented infrastructure for efficiently
routing, dispatching, and managing requests, events, and application
queues across system processes and application services&lt;/i&gt;".  A raft
of other material is on the Tuxedo &lt;a
href="http://www.oracle.com/technetwork/middleware/tuxedo/overview/index.html"
&gt;landing page&lt;/a&gt;.  There is also a new white paper on PHP being
reviewed at this very moment.&lt;/p&gt;

&lt;p&gt;The VM uses Oracle Linux 5.6.  It has PHP 5.3 and Oracle Tuxedo
11.1.1.2 installed and configured.  The SALT and TSAM components of
Tuxedo are also available.  &lt;/p&gt;

&lt;p&gt;Tuxedo's PHP support comes in the form of a new mod_tuxedo module
for Apache 2.2 (or Oracle HTTP Server).  This handles all PHP scripts,
executing them using managed PHP processes.  Existing applications can
run normally:&lt;/p&gt;

&lt;p&gt;&lt;img src="https://blogs.oracle.com/opal/resource/images/tux_php_app.png"&gt;&lt;/p&gt;

&lt;p&gt;Tuxedo also lets PHP be exposed as a web service:&lt;/p&gt;

&lt;p&gt;&lt;img src="https://blogs.oracle.com/opal/resource/images/tux_php_soa.png"&gt;&lt;/p&gt;

&lt;p&gt;The tutorial manual provided inside the VM steps through using PHP
in both ways.  The NetBeans IDE, Oracle Database XE and MySQL are
included on the VM to make it easier to carry out your own further
experiments with Tuxedo and PHP.&lt;/p&gt;

&lt;p&gt;Tuxedo has been around for a long time and has an established
customer base.  If you look at Oracle Database's big TPC-C benchmark's
you can see Tuxedo was involved.  It's even &lt;a
href="https://blogs.oracle.com/Tuxedo/entry/tuxedo_is_certified_on_exalogi"
&gt;certified on Exalogic&lt;/a&gt;. The new dynamic language support in Tuxedo
is going to open up "Enterprise" infrastructure, making it easy to
integrate modern solutions in a heterogeneous environment. &lt;/p&gt;

&lt;p&gt;When I get back from the Dutch PHP and PHP|Tek conferences, which
run back to back from next week, I plan to write up more details about
using Tuxedo and PHP.&lt;/p&gt;

&lt;p&gt;Update: a new whitepaper is available: &lt;a href="http://www.oracle.com/technetwork/middleware/tuxedo/tuxedo-dynamic-langs-twp-401471.pdf"&gt;
Oracle Tuxedo: An Enterprise Platform for
Dynamic Languages&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/WZUSbdYrzww" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/oracle_tuxedo_a_new_way</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/php_5_4_is_gathering</guid>
    <title>PHP 5.4 is Gathering Momentum</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/H-UUF400DE0/php_5_4_is_gathering</link>
        <pubDate>Wed, 11 May 2011 16:36:24 -0500</pubDate>
    <category>php</category>
    <category>community</category>
    <category>development</category>
    <category>karma</category>
    <category>php</category>
    <category>release</category>
    <category>svn</category>
    <category>test</category>
            <description>&lt;p&gt;Discussion on the PHP mail lists and IRC channels in the past few
days has been looking positive about an alpha release of PHP 5.4
soon.  This will be taken from the "trunk" branch of PHP.  The exact
feature list is under discussion but the mood seems to be
"ship what we currently have" though a couple of features are
slated to be deferred until later.&lt;/p&gt;

&lt;p&gt;A &lt;a href="http://news.php.net/php.internals/52328" &gt;paragraph from a post by
Rasmus Lerdorf&lt;/a&gt; on PHP's "internals" mail list is worth re-broadcasting.  
Rasmus is more than willing to grant PHP karma to encourage contributions:&lt;/p&gt;

&lt;i&gt;&lt;blockquote&gt;And if you can't figure out how to fix a test, post the
details here.  I'd love to point some of the obvious talents and
energy of this list towards the code. If you don't have an svn account
for committing your fixed test, go to &lt;a
href="http://www.php.net/svn-php.php"
&gt;http://www.php.net/svn-php.php&lt;/a&gt; and fill in the little form at the
bottom there and put in the test that you fixed and a 1-liner about
how you fixed it and I will set you up with an account right
away. Info on how to check out the code from svn is here: &lt;a
href="https://wiki.php.net/vcs/svnfaq"
&gt;https://wiki.php.net/vcs/svnfaq&lt;/a&gt; &lt;/blockquote&gt;&lt;/i&gt;

&lt;p&gt;So, you can easily become a contributor to PHP, which would look great
on your resume.&lt;/p&gt;

&lt;p&gt;If SVN seems daunting you can run PHP tests from the normal &lt;a
href="http://snaps.php.net/" &gt;snapshots&lt;/a&gt; and &lt;a
href="http://php.net/downloads.php" &gt;release bundles&lt;/a&gt; too.&lt;/p&gt;

&lt;p&gt;To discuss test issues you can subscribe to the PHP internals and
QA mail lists at &lt;a href="http://php.net/mailing-lists.php"
&gt;http://php.net/mailing-lists.php&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/H-UUF400DE0" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/php_5_4_is_gathering</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/configuring_php_gd_on_ubuntu</guid>
    <title>Configuring PHP GD on Ubuntu 11.04 "Natty"</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/SWcFqDU7UuQ/configuring_php_gd_on_ubuntu</link>
        <pubDate>Wed, 11 May 2011 14:52:27 -0500</pubDate>
    <category>php</category>
    <category>compile</category>
    <category>library</category>
    <category>linux</category>
    <category>path</category>
    <category>php</category>
            <description>&lt;p&gt;This is a post for the "so I can find it again" category.  (It is also a test for the new blogging infrastructure that Oracle migrated to last week).&lt;/p&gt;

&lt;p&gt;After an upgrade to Ubuntu 11.04 on one 32 bit machine, my simple custom script to build PHP 5.3 from source failed.  The script isn't complex, pulling in a couple of extensions that I use for sanity checking the OCI8 extension.  I use the GD extension to generate some simple graphs.&lt;/p&gt;

&lt;p&gt;My configuration command was like:&lt;/p&gt;

&lt;pre&gt;./configure ... --with-gd --with-jpeg-dir --with-png-dir ...&lt;/pre&gt;

&lt;p&gt;which gave the error:&lt;/p&gt;

&lt;pre&gt;configure: error: libjpeg.(a|so) not found&lt;/pre&gt;

&lt;p&gt;This release of Ubuntu has moved around some standard libraries.  After some fiddling around, checking the 'configure' options and the GD extension config.m4 file intention, the solution for me was simple.  Add the &lt;code&gt;--with-libdir=lib/i386-linux-gnu&lt;/code&gt; option to configure.  I haven't tried this with other extensions so YMMV.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; Rasmus just merged a &lt;a href="http://svn.php.net/viewvc?view=revision&amp;revision=310964"&gt;patch&lt;/a&gt; to gd that should make the &lt;code&gt;--with-libdir&lt;/code&gt; option unnecessary&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/SWcFqDU7UuQ" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/configuring_php_gd_on_ubuntu</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/malicious_website_use_will_nev</guid>
    <title>Malicious website use will never go away: how do you manage it?</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/4O_Edg5FuBM/malicious_website_use_will_nev</link>
        <pubDate>Wed, 27 Apr 2011 14:48:43 -0500</pubDate>
    <category>php</category>
    <category>comment</category>
    <category>experience</category>
    <category>forum</category>
    <category>hacking</category>
    <category>manipluation</category>
    <category>mysql</category>
    <category>php</category>
    <category>quality</category>
    <category>security</category>
    <category>spam</category>
    <category>user</category>
    <category>website</category>
    <atom:summary type="html"> </atom:summary>        <description>&lt;p&gt;&lt;p&gt;OTN has published two articles by Eli White that stem from his long
experience with protecting high volume websites from unwanted and
malicious use.  Eli has worked on many large scale PHP projects
including Digg, TripAdvisor, and for the Hubble space telescope
program.  I've seen Eli's conference presentation on preventing web
site spam and on the deeper topic of website manipulation.  I am
really glad to see the material put in article format.  The techniques
Eli covers will always be applicable in one form or another.  They
should be a fundamental part of any website architect's bag of
tricks.&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;p&gt;The articles are:&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.oracle.com/technetwork/articles/dsl/combating-spam-360061.html" &gt;Combating Spam for Healthier Websites&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;and&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.oracle.com/technetwork/articles/dsl/preventing-website-manipulation-366493.html" &gt;Preventing Nefarious Website Manipulation (Gaming a System)&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;p&gt;These articles follow on from Eli's recent two part article on &lt;a
href="http://www.oracle.com/technetwork/articles/dsl/white-php-part1-355135.html"
&gt;Scaling a PHP MySQL Web Application&lt;/a&gt;.
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/4O_Edg5FuBM" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/malicious_website_use_will_nev</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/oracle_11gr2_xe_beta_is_now_av</guid>
    <title>Oracle 11gR2 XE Beta is now available </title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/jLekrI-OBOk/oracle_11gr2_xe_beta_is_now_av</link>
        <pubDate>Fri, 1 Apr 2011 14:17:27 -0500</pubDate>
    <category>php</category>
    <category>database</category>
    <category>express_edition</category>
    <category>lightweight</category>
    <category>php</category>
    <category>release</category>
    <category>small_footprint</category>
    <category>xe</category>
    <atom:summary type="html"> </atom:summary>        <description>&lt;p&gt;Oracle 11gR2 Express Edition ("XE") Beta is now &lt;a
href="http://www.oracle.com/technetwork/database/express-edition/11gxe-beta-download-302519.html"
&gt;downloadable&lt;/a&gt; for Linux x86_64 and Windows (32-Bit).  Oracle XE is
a free, slimmed down version of the full Oracle DB.  Documentation for
XE 11gR2 is &lt;a
href="http://download.oracle.com/docs/cd/E17781_01/index.htm"
&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One of the Oracle features retained by XE 11gR2 is &lt;a
href="http://www.oracle.com/technetwork/topics/php/php-scalability-ha-twp-128842.pdf"&gt;DRCP
support&lt;/a&gt;.  This is the first XE release with DRCP so now you can
make the most of limited resources using PHP again a small footprint
DB.&lt;/p&gt;

&lt;p&gt;The big XE change for Linux users is that it is now 64-bit instead
of 32-bit.  With Linux production systems really rooted in a 64-bit
world it makes sense for XE to head in that direction too.&lt;/p&gt;

&lt;p&gt;Report any XE 11gR2 Beta issues at the &lt;a
href="http://forums.oracle.com/forums/forum.jspa?forumID=1378"
&gt;dedicated OTN forum&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;To compile PHP with XE 11gR2 Beta code, edit
&lt;code&gt;$ORACLE_HOME/lib/sysliblist&lt;/code&gt; and remove the references to
the two libraries &lt;code&gt;-lipgo -lsvml&lt;/code&gt; (Oracle bug 12318656).
Before the Beta release I had picked up on another compilation gotcha but didn't
spot this sysliblist issue.  Dang.  Luckily, that's what Beta programs
are for!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/jLekrI-OBOk" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/oracle_11gr2_xe_beta_is_now_av</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/building_php_53_with_oracle_ht</guid>
    <title>Building PHP 5.3 with Oracle HTTP Server 11g</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/RULfbuRjzPc/building_php_53_with_oracle_ht</link>
        <pubDate>Wed, 23 Mar 2011 11:13:24 -0500</pubDate>
    <category>php</category>
    <category>11g</category>
    <category>http</category>
    <category>installation</category>
    <category>ohs</category>
    <category>oracle</category>
    <category>php</category>
    <category>server</category>
    <atom:summary type="html"> </atom:summary>        <description>&lt;p&gt;This post has instructions for building PHP with Oracle HTTP Server
11g (OHS).  It is based on the older note &lt;a
href="http://www.oracle.com/technetwork/topics/php/php-ohs-092324.html"
&gt;Using PHP with Oracle HTTP Server 11g&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;I used an uncommon OS, but the instructions should be very similar
for other systems.  This post is in the "blogging it so I can find it
again" category.&lt;/p&gt;

&lt;p&gt;I recently had the so-called "pleasure" of building PHP on HP/UX
Itanium.  This is a platform that I'm very glad to see Oracle's
announcement: &lt;a
href="http://www.oracle.com/us/corporate/press/346696" &gt;Oracle Stops
All Software Development For Intel Itanium Microprocessor&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;I get the impression that not a lot of people in the PHP community
are using Itanium.  There are enough warnings during PHP compilation
that would make me extremely uncomfortable using it for production
applications.  A PHP on Itanium installation bug that I logged long
ago has not been patched, indicating to me that not many PHP people
are investing time in the platform.  I can't recommend using Itanium
platform for PHP.  &lt;/p&gt;

&lt;p&gt;Anyway, I had a need and here are the steps for posterity.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Steps to build PHP 5.3.5 with OHS 11g (with reference to HP/UX Itanium 64 bit)&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;1. Check OS &amp; compiler&lt;/p&gt;

&lt;pre&gt;
    $ uname -a
    HP-UX B.11.31 U ia64 2921109885 unlimited-user license

    $ cc --version
    cc: HP C/aC++ B3910B A.06.23 [May 18, 2009]
&lt;/pre&gt;

&lt;p&gt;    I saw various issues with the whole HP/UX build environment,
    including total compilation failure when using an older
    (different??) compiler than this.
&lt;/p&gt;

&lt;p&gt;2a. Set the Oracle environment.  The Oracle home contains an instance
   of OHS.&lt;/p&gt;
&lt;pre&gt;
     export ORACLE_HOME=/path/to/your/oracle-home
     export ORACLE_INSTANCE=$ORACLE_HOME/instances/instance1

     export CONFIG_FILE_PATH=$ORACLE_INSTANCE/config/OHS/ohs1
     export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/ohs/lib:$LD_LIBRARY_PATH
&lt;/pre&gt;

&lt;p&gt;2b. Set the PHP compiler environment.  &lt;/p&gt;
&lt;pre&gt;
     export CFLAGS='+O2 +DD64'
     export CC=/bin/cc
&lt;/pre&gt;

&lt;p&gt;   You'll need to check and experiement with the best compiler
   options.  On Itanium +DD64 is needed to create a 64bit binary
   usable with OHS.
&lt;/p&gt;

&lt;p&gt;3. Download and extract the Oracle InstantClient 11.1.0.7.0 SDK ZIP file from
   &lt;a href="http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html" &gt;http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html&lt;/a&gt;
   e.g.: &lt;a href="http://download.oracle.com/otn/hp/instantclient/111070/sdk-11.1.0.7.0-hpux-ia64.zip" &gt;http://download.oracle.com/otn/hp/instantclient/111070/sdk-11.1.0.7.0-hpux-ia64.zip&lt;/a&gt;
&lt;/p&gt;
&lt;pre&gt;
     unzip sdk-11.1.0.7.0-hpux-ia64.zip
&lt;/pre&gt;

&lt;p&gt;4. Copy the new header files&lt;/p&gt;
&lt;pre&gt;
     cp instantclient_11_1/sdk/include/*.h $ORACLE_HOME/rdbms/demo
&lt;/pre&gt;

&lt;p&gt;5. Extract the php-5.3.5 bundle to a working directory:&lt;/p&gt;

&lt;pre&gt;
     gunzip php-5.3.5.tar.gz
     tar -xf php-5.3.5.tar
&lt;/pre&gt;

&lt;p&gt;6. Change to the extracted PHP directory:&lt;/p&gt;
&lt;pre&gt;
     cd php-5.3.5
&lt;/pre&gt;

&lt;p&gt;7. Edit PHP's 'configure' and change 'sl' to 'so' in the 'hpux' case
   at about line 3720: (This is the Itanium specific part of the patch in
   &lt;a href="http://pecl.php.net/bugs/bug.php?id=15016" &gt;PHP PECL Bug 15016&lt;/a&gt;)
&lt;/p&gt;

&lt;pre&gt;
     case $host_alias in
     *hpux*)
       SHLIB_SUFFIX_NAME=so
       SHLIB_DL_SUFFIX_NAME=so
       ;;
&lt;/pre&gt;

&lt;p&gt;8. If using PHP 5.3.6 or earlier, edit PHP's 'configure' script and
   change both occurrences of:
&lt;/p&gt;

&lt;pre&gt;
      APACHE_VERSION=`expr $4 \* 1000000 + $5 \* 1000 + $6`
&lt;/pre&gt;
&lt;p&gt;to:&lt;/p&gt;
&lt;pre&gt;
      APACHE_VERSION=`expr $6 \* 1000000 + $7 \* 1000 + $8`
&lt;/pre&gt;

&lt;p&gt;This step is missing from the OHS 11g PHP installation
   instructions. It is needed because OHS's Apache reports its error
   number differently.  See &lt;a
   href="http://bugs.php.net/bug.php?id=54084" &gt;PHP bug 54084&lt;/a&gt;,
   which I just fixed in the 5.3 and trunk branches of the PHP source
   code.&lt;/p&gt;

&lt;p&gt;9. Clean up if you are repeating the steps and re-running 'configure'
   with different options:&lt;/p&gt;
&lt;pre&gt;
      make distclean
      rm -rf config.cache autom4te.cache
&lt;/pre&gt;

&lt;p&gt;10. Configure &amp; build PHP with whatever options:&lt;/p&gt;
&lt;pre&gt;
      ./configure --disable-all --with-apxs2=$ORACLE_HOME/ohs/bin/apxs \
                  --with-oci8=$ORACLE_HOME --disable-rpath \
                  --prefix=$ORACLE_HOME --with-config-file-path=$CONFIG_FILE_PATH
      make
&lt;/pre&gt;

&lt;p&gt;    This produces a bunch of compiler warnings that would make me very
    uncomfortable to have running in production.
&lt;/p&gt;

&lt;p&gt;Notice I used --disable-all.  The system libraries are a little
different on Itanium and I didn't have access to libraries such as
libxml2.  Perhaps by working out the installation steps or by building
third-party software bundles you could get the dependencies for other
PHP extensions.&lt;/p&gt;

&lt;p&gt;11. Copy a default php.ini file:&lt;/p&gt;

&lt;pre&gt;      cp php.ini-devlopment $CONFIG_FILE_PATH/php.ini
&lt;/pre&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;pre&gt;
      cp php.ini-production $CONFIG_FILE_PATH/php.ini
&lt;/pre&gt;

&lt;p&gt;12. Edit $CONFIG_FILE_PATH/php.ini and add a timezone line (this is
    mandatory for PHP 5.3):&lt;/p&gt;
&lt;pre&gt;
      date.timezone=America/Los_Angeles
&lt;/pre&gt;

&lt;p&gt;13. Edit $CONFIG_FILE_PATH/php.ini and add 'E' to 'variables_order' so
    PHP's run-tests.php passes the Oracle environment correctly when
    running tests:&lt;/p&gt;
&lt;pre&gt;
      variables_order = "EGPCS"
&lt;/pre&gt;

&lt;p&gt;    This can be removed later.&lt;/p&gt;

&lt;p&gt;14. Modify run-tests.php and change 60 to 600.  This prevents long
    Oracle tests from timing out.&lt;/p&gt;

&lt;p&gt;15. Edit ext/oci8/tests/details.inc and set the SYSTEM password and
    connection string to your Oracle DB.&lt;/p&gt;

&lt;p&gt;16. Set the PHP environment so PHP tests don't try to email results to
    the world:&lt;/p&gt;
&lt;pre&gt;
      export NO_INTERACTION=no
&lt;/pre&gt;

&lt;p&gt;17. Test the PHP command-line binary:&lt;/p&gt;
&lt;pre&gt;
      make test
&lt;/pre&gt;
&lt;p&gt;    The OCI8 tests can be run with:&lt;/p&gt;
&lt;pre&gt;
      make test TESTS=ext/oci8
&lt;/pre&gt;

&lt;p&gt;18. Investigate failed tests.  Also compare the results with 64 bit
    Linux results.  A significant number of tests do pass on Itanium,
    which gives some hope that much of the PHP code base works, even
    if it is delicate and likely to be prone to memory corruption
    issues.
&lt;/p&gt;
&lt;p&gt;19. If all is OK, install the PHP binaries:&lt;/p&gt;
&lt;pre&gt;
      make install
&lt;/pre&gt;

&lt;p&gt;20. Edit $CONFIG_FILE_PATH/httpd.conf and add a line:&lt;/p&gt;
&lt;pre&gt;
     AddType application/x-httpd-php .php 
&lt;/pre&gt;

&lt;p&gt;21. Restart OHS:&lt;/p&gt;
&lt;pre&gt;
     cd $ORACLE_INSTANCE/bin
     ./opmnctl start
     ./opmnctl stopproc ias-component=ohs1
     ./opmnctl startproc ias-component=ohs1
&lt;/pre&gt;

&lt;p&gt;22. Create a phpinfo file:&lt;/p&gt;
&lt;pre&gt;
      echo '&amp;lt;?php phpinfo(); ?&amp;gt;' &amp;gt; $ORACLE_INSTANCE/config/OHS/ohs1/htdocs/phpinfo.php
&lt;/pre&gt;

&lt;p&gt;23. Check phpinfo on the port OHS is configured for.  In my case it
    was port 7777:
&lt;/p&gt;
&lt;pre&gt;
      http://localhost:7777/phpinfo.php
&lt;/pre&gt;

&lt;p&gt;24. Create and run some OCI8 scripts in $ORACLE_INSTANCE/config/OHS/ohs1/htdocs at your leisure.
&lt;/p&gt;

&lt;p&gt;To repeat my earlier warning, I don't recommend using PHP on Itanium.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/RULfbuRjzPc" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/building_php_53_with_oracle_ht</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/netretails_online_retail_opera</guid>
    <title>Netretail's online retail operation benefits from personal contact</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/Bgzy1WmrZUs/netretails_online_retail_opera</link>
        <pubDate>Wed, 16 Mar 2011 14:11:56 -0500</pubDate>
    <category>php</category>
    <category>connection_pooling</category>
    <category>customer_profile</category>
    <category>drcp</category>
    <category>netretail</category>
    <category>online</category>
    <category>php</category>
    <category>retail</category>
    <category>web_application</category>
    <atom:summary type="html"> </atom:summary>        <description>&lt;p&gt;Hot on oracle.com is a &lt;a
href="http://www.oracle.com/us/corporate/customers/netretail-holding-1-db-snapshot-307054.pdf"&gt;snapshot
of Netretail Holding B.V.&lt;/a&gt; profiling their use of PHP and Oracle
technology such as Oracle RAC cluster database to become a leading
online retailer across Central and Eastern Europe.&lt;/p&gt;

&lt;p&gt;We've also just refreshed our key &lt;a
href="http://www.oracle.com/technetwork/topics/php/whatsnew/php-scalability-ha-twp-128842.pdf"
&gt;PHP Scalability and High Availability &lt;/a&gt; whitepaper which talks
about connection pooling (DRCP) and Fast Application Notification
(FAN).  We brought it up to date for 11gR2 and PHP 5.3.  It now
includes the new 11gR2 V$CPOOL_CONN_INFO view, the new columns for
DBA_CPOOL_INFO, information about LOGOFF triggers, and information
about the support for Client Result Caching with DRCP.&lt;/p&gt;

&lt;p&gt;Back to Netretail.  Two of their secrets to success are keeping
technically up to date, and networking.  That is, networking in the
business sense.  I had the pleasure of meeting Michal Táborský (&lt;a
href="http://www.twitter.com/whizz"&gt;@whizz&lt;/a&gt;), the Chief System
Architect, when he was in California for a Velocity conference.
Michal took time to visit Oracle HQ and talk with our developers about
his then current architecture and future needs.  I also met his
manager at last year's Oracle OpenWorld conference.&lt;/p&gt;

&lt;p&gt;Having built up a relationship with us, Netretail now has access to
Oracle Development staff.  While this will never bypass Oracle Support
(which have tools, systems etc that are needed and useful for
resolving issues), it makes communication easier for some classes of
questions. It helps discussions that will let us improve Oracle
products, and make Netretail stronger.&lt;/p&gt;

&lt;p&gt;I like this.  And there's no reason why you can't talk with us
too. You know where to &lt;a href="mailto:christopher.jones@oracle.com" &gt;email
me&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/Bgzy1WmrZUs" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/netretails_online_retail_opera</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/more_on_php_and_oracle_11gr2_i</guid>
    <title>More on PHP and Oracle 11gR2 Improvements to Client Result Caching</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/HfvVUi0uKcU/more_on_php_and_oracle_11gr2_i</link>
        <pubDate>Thu, 3 Mar 2011 12:36:33 -0600</pubDate>
    <category>php</category>
    <category>benchmark</category>
    <category>cache</category>
    <category>client</category>
    <category>crc</category>
    <category>php</category>
    <category>result</category>
    <atom:summary type="html"> </atom:summary>        <description>&lt;p&gt;Oracle 11.2 brought several improvements to Client Result Caching.  CRC is way for the results of queries to be cached in the database client process for reuse.&amp;nbsp; In an Oracle OpenWorld presentation "&lt;a href="http://www.oracle.com/technetwork/database/enterprise-edition/databaseaccessperformancebest.pdf"&gt;Best Practices for Developing Performant Application&lt;/a&gt;" my colleague Luxi Chidambaran had a (non-PHP generated) graph for the Nile benchmark that shows a DB CPU reduction up to 600% and response times up to 22% faster when using CRC.&lt;/p&gt;&lt;p&gt;Sometimes CRC is called the "Consistent Client Cache" because Oracle automatically invalidates the cache if table data is changed.&amp;nbsp; This makes it easy to use without needing application logic rewrites.  There are a few simple database settings to turn on and tune CRC, so management is also easy.&lt;/p&gt;&lt;p&gt;PHP OCI8 as a "client" of the database can use CRC.&amp;nbsp; The cache is per-process, so plan carefully before caching large data sets.&amp;nbsp; Tables that are candidates for caching are look-up tables where the network transfer cost dominates.&lt;/p&gt;&lt;p&gt;CRC is really easy in 11.2 - I'll get to that in a moment.&amp;nbsp; It was also pretty easy in Oracle 11.1 but it needed some tiny application changes.&amp;nbsp; In PHP it was used like:&lt;/p&gt;&lt;p&gt;&lt;font face="monospace"&gt;$s = oci_parse($c, "select /*+ result_cache */ * from employees");&lt;br/&gt;
oci_execute($s, OCI_NO_AUTO_COMMIT); // Use OCI_DEFAULT in OCI8 &amp;lt;= 1.3&lt;br/&gt;
oci_fetch_all($s, $res);&lt;/font&gt;&lt;/p&gt;&lt;p&gt;I &lt;a href="https://blogs.oracle.com/opal/entry/oracle_11g_result_caching_and"&gt;blogged about this&lt;/a&gt; in the past.&amp;nbsp; The query had to include a specific hint that you wanted the results cached, and you needed to turn off auto committing during execution either with the OCI_DEFAULT flag or its new, better-named alias OCI_NO_AUTO_COMMIT.&amp;nbsp; The no-commit flag rule didn't seem reasonable to me because most people wouldn't be specific about the commit state for a query.&lt;/p&gt;&lt;p&gt;Now in Oracle 11.2, DBAs can now nominate tables for caching, either with CREATE TABLE or ALTER TABLE.&amp;nbsp; That means you don't need the query hint anymore.&amp;nbsp; As well, the no-commit flag requirement has been lifted.&amp;nbsp; Your code can now look like:&lt;/p&gt;&lt;p&gt;&lt;font face="monospace"&gt;$s = oci_parse($c, "select * from employees");&lt;br/&gt;
oci_execute($s);&lt;br/&gt;
oci_fetch_all($s, $res);&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Since your code probably already looks like this, your DBA can find the top queries in the database and simply tune the system by turning on CRC in the database and issuing an ALTER TABLE statement for candidate tables.&amp;nbsp; Voila.&lt;/p&gt;&lt;p&gt;Another CRC improvement in Oracle 11.2 is that it works with DRCP connection pooling.&lt;/p&gt;&lt;p&gt;There is some fine print about what is and isn't cached, check the &lt;a href="http://www.oracle.com/pls/db112/homepage"&gt;Oracle manuals&lt;/a&gt; for details.&amp;nbsp; If you're using 11.1 or non-DRCP "dedicated servers" then make sure you use oci_pconnect() persistent connections.&amp;nbsp; Also in PHP don't bind strings in the query, although binding as SQLT_INT is OK.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/HfvVUi0uKcU" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/more_on_php_and_oracle_11gr2_i</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/profiling_netbeans_70_beta_2_a_1</guid>
    <title>Profiling NetBeans 7.0 Beta 2 and Reporting Problems</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/1W4zrBqjudw/profiling_netbeans_70_beta_2_a_1</link>
        <pubDate>Tue, 1 Mar 2011 13:12:10 -0600</pubDate>
    <category>php</category>
    <category>php</category>
    <atom:summary type="html"> </atom:summary>        <description>&lt;p&gt;&lt;p&gt;With NetBeans 7.0 recently going into Beta 2 phase, now is the time to test it out properly and report issues.  The development team has been squashing bugs, including memory issues with the PHP bundle.&lt;/p&gt;&lt;p&gt;There are some great &lt;a href="http://netbeans.org/community/releases/70/index.html"&gt;new PHP related features&lt;/a&gt; in NetBeans 7.0, so you know you want to try it out.&lt;/p&gt;&lt;p&gt;If you identify something wrong with NetBeans, please report it following the guidelines &lt;a href="http://wiki.netbeans.org/IssueReportingGuidelines"&gt;http://wiki.netbeans.org/IssueReportingGuidelines&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Depending on the issues, data to attach to the report is mentioned on: &lt;a href="http://wiki.netbeans.org/FaqLogMessagesFile"&gt;http://wiki.netbeans.org/FaqLogMessagesFile&lt;/a&gt; and &lt;a href="http://wiki.netbeans.org/FaqProfileMeNow"&gt; http://wiki.netbeans.org/FaqProfileMeNow&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If you have a memory issue then a memory dump would also be useful. Run the &lt;tt&gt;jmap&lt;/tt&gt; tool for this. There is some background information on &lt;a href="http://wiki.netbeans.org/FaqMemoryDump"&gt;http://wiki.netbeans.org/FaqMemoryDump&lt;/a&gt;.  Here's how I used it.&lt;/p&gt;&lt;p&gt;First I set my environment to match the JDK used by NetBeans.  In my case I am using a nightly build so the JDK is in the configuration file under &lt;tt&gt;$HOME/netbeans-dev-201102210501&lt;/tt&gt;:&lt;/p&gt;&lt;pre&gt;$ egrep netbeans_jdkhome $HOME/netbeans-dev-201102210501/etc/netbeans.conf&lt;br/&gt;
netbeans_jdkhome="/home/cjones/src/jdk1.6.0_24"&lt;br/&gt;
$ export JAVA_HOME=/home/cjones/src/jdk1.6.0_24&lt;br/&gt;
$ export PATH=$JAVA_HOME/bin:$PATH&lt;br/&gt;
&lt;/pre&gt;&lt;p&gt;Next, I found the correct process number to examine:&lt;/p&gt;&lt;p&gt;&lt;font face="monospace"&gt;$ ps -ef | egrep 'netbeans|jdk'&lt;br /&gt;cjones&amp;nbsp;&amp;nbsp; 23230&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 0 16:07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:00:00 /bin/bash /home/cjones/netbeans-&lt;br /&gt;cjones&amp;nbsp;&amp;nbsp; 23438 23230&amp;nbsp; 2 16:07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:00:09 /home/cjones/src/jdk1.6.0_24/bin&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Finally I used the parent JDK process as the &lt;tt&gt;jmap&lt;/tt&gt; argument:&lt;br /&gt;&lt;/p&gt;&lt;font face="monospace"&gt;$ jmap -histo:live 23438&lt;br /&gt;&amp;nbsp;num&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #instances&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #bytes&amp;nbsp; class name&lt;br /&gt;----------------------------------------------&lt;br /&gt;&amp;nbsp;&amp;nbsp; 1:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 12075&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9028656&amp;nbsp; [I&lt;br /&gt;&amp;nbsp;&amp;nbsp; 2:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 49535&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6581920&amp;nbsp; &amp;lt;constmethodklass&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 3:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 49535&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3964128&amp;nbsp; &amp;lt;methodklass&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 4:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 80256&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3840776&amp;nbsp; &amp;lt;symbolklass&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 5:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 36093&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3635336&amp;nbsp; [C&lt;br /&gt;&amp;nbsp;&amp;nbsp; 6:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5095&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3341312&amp;nbsp; &amp;lt;constantpoolklass&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 7:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5095&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2486016&amp;nbsp; &amp;lt;instanceklassklass&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 8:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4325&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1961432&amp;nbsp; &amp;lt;constantpoolcacheklass&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 9:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18729&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1763976&amp;nbsp; [B&lt;br /&gt;&amp;nbsp; 10:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 59952&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1438848&amp;nbsp; java.util.HashMap$Entry&lt;br /&gt;&amp;nbsp; . . .&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;This histogram memory report will help identify the kind of memory issues you are seeing.  It may not be as complete as an often tens of megabyte &lt;tt&gt;jmap -dump:live,file=/tmp/nbheap.log 23438&lt;/tt&gt; heap dump, but is much more easily attached to a bug report.&lt;p&gt;If you want to keep up to date with NetBeans, nightly builds are at:&amp;nbsp;&lt;a href="http://bits.netbeans.org/download/trunk/nightly/latest/zip/"&gt;http://bits.netbeans.org/download/trunk/nightly/latest/zip/&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/1W4zrBqjudw" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/profiling_netbeans_70_beta_2_a_1</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/php_oci8_and_oracle_11g_drcp_c</guid>
    <title>PHP OCI8 and Oracle 11g DRCP Connection Pooling in Pictures</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/s9DrDBew_LE/php_oci8_and_oracle_11g_drcp_c</link>
        <pubDate>Mon, 21 Feb 2011 16:32:28 -0600</pubDate>
    <category>php</category>
    <category>11g</category>
    <category>connection</category>
    <category>database</category>
    <category>dedicated</category>
    <category>drcp</category>
    <category>example</category>
    <category>graph</category>
    <category>oci8</category>
    <category>oracle</category>
    <category>php</category>
    <category>pool</category>
    <category>pooled</category>
    <atom:summary type="html"> </atom:summary>        <description>&lt;p&gt;Here is a screen shot from a PHP OCI8 connection pooling demo that I
like to run. It graphically shows how little database host memory is
needed when using DRCP connection pooling with Oracle Database 11g.
&lt;/p&gt;

&lt;p&gt;Migrating to DRCP can be as simple as starting the pool and
changing the connection string in your PHP application.&lt;/p&gt;

&lt;p&gt;The script that generated the data for this graph was a simple
"Parts" query application being run under various simulated user
loads.  I was running the database on a small Oracle Linux server with
just 2G of memory.  I used PHP OCI8 1.4.  Apache is in pre-fork mode,
as needed for PHP.&lt;/p&gt;

&lt;p&gt;Each graph has time on the horizontal access in arbitrary 'tick'
time units.&lt;/p&gt;
&lt;form mt:asset-id="13276" class="mt-enclosure mt-enclosure-image" style="display: inline;"&gt;&lt;a href="https://blogs.oracle.com/opal/resource/assets_c-2011-02/drcp_results-13276.html" onclick="window.open('https://blogs.oracle.com/opal/resource/assets_c-2011-02/drcp_results-13276.html','popup','width=1048,height=760,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"&gt;&lt;img src="https://blogs.oracle.com/opal/resource/drcp_results.png" width="600" height="435" alt="Graphs comparing Oracle DRCP pooled with 'dedicated server' usage" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /&gt;&lt;/a&gt;&lt;/form&gt;

&lt;p&gt;Click the image to see it full sized.&lt;/p&gt;

&lt;b&gt;Pooled connections&lt;/b&gt;

&lt;p&gt;Beginning with the top left graph, At tick time 65 I used Apache's
'&lt;i&gt;ab&lt;/i&gt;' tool to start 100 concurrent 'users' running the
application.  These users connected to the database using DRCP:&lt;/p&gt;

&lt;pre&gt;
    $c = oci_pconnect('phpdemo', 'welcome', 'myhost/orcl:pooled');
&lt;/pre&gt;

&lt;p&gt;A second hundred DRCP users were added to the system at tick 80 and
a final hundred users added at tick 100.  At about tick 110 I stopped
the test and restarted Apache.  This closed all the connections.&lt;/p&gt;

&lt;p&gt;The bottom left graph shows the number of statements being executed
by the database per second, with some spikes for background database
activity and some variability for this small test.  Each extra batch of
users adds another 'step' of load to the system.&lt;/p&gt;

&lt;p&gt;Looking at the top right Server Process graph shows the database
server processes doing the query work for each web user.  As user load
is added, the DRCP server pool increases (in green).  The pool is
initially at its default size 4 and quickly ramps up to about (I'm
guessing) 35.  At tick time 100 the pool increases to my configured
maximum of 40 processes.  Those 40 processes are doing the query work
for all 300 web users.  When I stopped the test at tick 110, the
pooled processes remained open waiting for more users to connect.  If
I had left the test quiet for the DRCP '&lt;i&gt;inactivity_timeout&lt;/i&gt;'
period (300 seconds by default), the pool would have shrunk back to 4
processes.  &lt;/p&gt;

&lt;p&gt;Looking at the bottom right, you can see the amount of memory being
consumed by the database.  During the initial quiet period about 500M
of memory was in use.  The absolute number is just an indication of my
particular DB configuration.  As the number of pooled processes
increases, each process needs more memory.  You can see the shape of
the memory graph echoes the Server Process graph above it.  Each of
the 300 web users will also need a few kilobytes but this is almost
too small to see on the graph.&lt;/p&gt;

&lt;b&gt;Non-pooled connections&lt;/b&gt;

&lt;p&gt;Compare the DRCP case with using '&lt;i&gt;dedicated server&lt;/i&gt;'
processes.&lt;/p&gt;

&lt;p&gt;At tick 140 I started 100 web users who did &lt;b&gt;not&lt;/b&gt; use pooled
connections:&lt;/p&gt;

&lt;pre&gt;
    $c = oci_pconnect('phpdemo', 'welcome', 'myhost/orcl');
&lt;/pre&gt;

&lt;p&gt;This connection string change is the only difference between the two
tests.&lt;/p&gt;

&lt;p&gt;At ticks 155 and 165 I started two more batches of 100 simulated
users each. At about tick 195 I stopped the user load but left Apache
running.  Apache then gradually returned to its quiescent state,
killing idle httpd processes and producing the downward slope at the
right of the graphs as the persistent database connection in each
Apache process was closed.&lt;/p&gt;

&lt;p&gt;The Executions per Second graph on the bottom left shows the same
step increases as for the earlier DRCP case.  The database is handling
this load.&lt;/p&gt;

&lt;p&gt;But look at the number of Server processes on the top right graph.
There is now a one-to-one correspondence between Apache/PHP processes
and DB server processes. Each PHP processes has one DB server
processes dedicated to it.  Hence the term '&lt;i&gt;dedicated server&lt;/i&gt;'.
&lt;/p&gt;

&lt;p&gt;The memory required on the database is proportional to all those
database server processes started. Almost all my system's memory was
consumed. I doubt it would have coped with any more user load.&lt;/p&gt;

&lt;b&gt;Summary&lt;/b&gt;

&lt;p&gt;Oracle Database 11g DRCP connection pooling significantly reduces
database host memory requirements allow more system memory to be
allocated for the SGA and allowing the system to scale to handled
thousands of concurrent PHP users.&lt;/p&gt;

&lt;p&gt;Even for small systems, using DRCP allows more web users to be
active.&lt;/p&gt;

&lt;p&gt;More information about PHP and DRCP can be found in the &lt;i&gt;PHP
Scalability and High Availability&lt;/i&gt; chapter of &lt;a
href="http://www.oracle.com/technetwork/topics/php/underground-php-oracle-manual-098250.html"&gt;The
Underground PHP and Oracle Manual&lt;/a&gt;. &lt;b&gt;Update&lt;/b&gt;: the &lt;a href="http://www.oracle.com/technetwork/topics/php/whatsnew/php-scalability-ha-twp-128842.pdf"&gt;whitepaper&lt;/a&gt; that the chapter was based on shows a benchmark where we supported 20,000 users on a database using commodity hardware with 2G memory.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/s9DrDBew_LE" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/php_oci8_and_oracle_11g_drcp_c</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/learn_to_use_php_or_python_wit</guid>
    <title>Learn to use PHP and Python with Oracle Database</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/qqAD9xrmqH8/learn_to_use_php_or_python_wit</link>
        <pubDate>Wed, 15 Dec 2010 20:25:38 -0600</pubDate>
    <category>php</category>
    <category>OBE</category>
    <category>database</category>
    <category>php</category>
    <category>python</category>
    <category>training</category>
    <atom:summary type="html"> </atom:summary>        <description>&lt;p&gt;The &lt;a href="http://apex.oracle.com/pls/apex/f?p=9830:1:0"
&gt;Oracle Learning Library&lt;/a&gt; has posted up the latest "Oracle By
Example" labs giving an introduction to PHP &amp;amp; Python with the Oracle Database :

&lt;ul&gt;

&lt;li&gt;&lt;a href="http://st-curriculum.oracle.com/obe/db/11g/r2/prod/appdev/opensrclang/phphol2010_db/php_db.htm" &gt;Using PHP with Oracle Database 11g&lt;/a&gt; - a basic introduction
&lt;li&gt;
&lt;a href="http://st-curriculum.oracle.com/obe/db/11g/r2/prod/appdev/opensrclang/phphol2010_webapp/php_webapp.htm" &gt;Developing a PHP Web Application with Oracle Database 11g &lt;/a&gt; - a Zend Framework application using the NetBeans IDE
&lt;li&gt;&lt;a href="http://st-curriculum.oracle.com/obe/db/11g/r2/prod/appdev/opensrclang/pythonhol2010_db/python_db.htm" &gt;Using Python With Oracle Database 11g&lt;/a&gt; - a basic introduction 
&lt;li&gt;&lt;a href="http://st-curriculum.oracle.com/obe/db/11g/r2/prod/appdev/opensrclang/pythonhol2010_django/python_django.htm" &gt;Using the Django Framework with Python and Oracle Database 11g&lt;/a&gt; - a basic web application&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/qqAD9xrmqH8" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/learn_to_use_php_or_python_wit</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/php_oci8_145_is_on_pecl</guid>
    <title>PHP OCI8 1.4.5 is on PECL</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/lDFA_L8YJVk/php_oci8_145_is_on_pecl</link>
        <pubDate>Thu, 9 Dec 2010 20:37:59 -0600</pubDate>
    <category>php</category>
    <category>driver</category>
    <category>oci8</category>
    <category>patch</category>
    <category>php</category>
    <category>release</category>
    <category>security</category>
    <atom:summary type="html"> </atom:summary>        <description>I just released &lt;a
href="http://pecl.php.net/package-info.php?package=oci8&amp;version=1.4.5"&gt;OCI8
1.4.5&lt;/a&gt; on PECL.  It is the same code base included in &lt;a
href="http://www.php.net/archive/2010.php#id2010-12-10-1" &gt;PHP
5.3.4&lt;/a&gt;.  It can be used to upgrade OCI8 on older PHP releases. OCI8
1.4.5 has one change since OCI8 1.4.4 made as part of PHP-wide
security fix to disallow null bytes in filenames.&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/lDFA_L8YJVk" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/php_oci8_145_is_on_pecl</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/php_brasil_2010_starts_on_the</guid>
    <title>PHP Brasil 2010 starts on the 25th November</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/uAzpiU1LCYg/php_brasil_2010_starts_on_the</link>
        <pubDate>Wed, 17 Nov 2010 13:57:22 -0600</pubDate>
    <category>php</category>
    <category>brazil</category>
    <category>conference</category>
    <category>php</category>
    <atom:summary type="html"> </atom:summary>        <description>&lt;p&gt;I'm really looking forward to attending &lt;a
href="http://www.temporealeventos.com.br/?area=13" &gt;PHP Brasil
2010&lt;/a&gt; next week and &lt;a
href="http://www.temporealeventos.com.br/?area=13-php-conference-brasil-2010-5-anos-o-principal-evento-de-php-da-america-latina-Developing-and-Deploying-High-Performance-PHP-Applications&amp;tipo=1&amp;id=3615"
&gt;presenting&lt;/a&gt; on PHP and Oracle.&lt;/p&gt;

&lt;p&gt; I was in Brazil for the conference two years ago.  I felt it was
very worthwhile and I enjoyed the conference a lot.  If you're in the
area and want to discuss your use of PHP and Oracle DB we can sit down
and talk.  Or we can set up a private meeting; my email is
christopher.jones @ oracle.com.&lt;/p&gt;


&lt;p&gt;&lt;b&gt;I will have some PHP ElePHPants to give away...&lt;/b&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/uAzpiU1LCYg" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/php_brasil_2010_starts_on_the</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/pecl_oci8_144_is_available</guid>
    <title>PECL OCI8 1.4.4 is Available</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/RZ9E1JyGXZY/pecl_oci8_144_is_available</link>
        <pubDate>Wed, 10 Nov 2010 12:29:05 -0600</pubDate>
    <category>php</category>
    <category>environment</category>
    <category>oci8</category>
    <category>pecl</category>
    <category>php</category>
    <category>release</category>
    <atom:summary type="html"> </atom:summary>        <description>&lt;p&gt;&lt;a href="http://pecl.php.net/package/oci8"&gt;PECL OCI8 1.4.4&lt;/a&gt; has
just been released.  It fixes a potential memory corruption using
&lt;tt&gt;oci_set_*&lt;/tt&gt; functions seen on 64 bit machines.  This release
can be used to update OCI8 on earlier PHP versions.&lt;/p&gt;

&lt;p&gt;During testing, command line PHP worked fine but in browser I
immediately got the infamous error:&lt;/p&gt;

&lt;pre&gt;
    Warning: oci_connect() [function.oci-connect]: OCIEnvNlsCreate()
    failed. There is something wrong with your system - please check
    that LD_LIBRARY_PATH includes the directory with Oracle Instant
    Client libraries in /home/cjones/public_html/ed.php on line 2
&lt;/pre&gt;

&lt;p&gt;I thought I'd seen all causes of this error before.  It means the
web server doesn't have the Oracle environment set correctly.
Commonly it happens on Windows machines with multiple versions of
Oracle installed.&lt;/p&gt;

&lt;p&gt;Since I had a reproducible test, I took the time to enhance OCI8
1.4.4 to display the underlying error message.  Several people had
been asking for this:&lt;/p&gt;

&lt;pre&gt;
    Warning: oci_connect() [function.oci-connect]: OCIEnvNlsCreate()
    failed. There is something wrong with your system - please check
    that LD_LIBRARY_PATH includes the directory with Oracle Instant
    Client libraries in /home/cjones/public_html/ed.php on line 2

    Warning: oci_connect() [function.oci-connect]: Error while trying
    to retrieve text for error ORA-01804 in
    /home/cjones/public_html/ed.php on line 2 exiting
&lt;/pre&gt;

&lt;p&gt;My web server environment was so screwed that Oracle couldn't even
locate the message files to print &lt;tt&gt;ORA-01804: failure to initialize
timezone information&lt;/tt&gt;, which was the failing part of
initialization.  Sadly the new message wasn't much help in resolving
my situation.  I eventually tracked down the cause to
&lt;tt&gt;httpd.conf&lt;/tt&gt; having:&lt;/p&gt;

&lt;pre&gt;
LoadModule php5_module        modules/libphp5.so
LoadModule php6_module        modules/libphp6.so
&lt;/pre&gt;

&lt;p&gt;It's not valid to load multiple versions of PHP like this but
Apache was starting without logging an error.  My left-over PHP 6
library statically linked OCI8 and an ORACLE_HOME.  My PHP 5 loaded
OCI8 via &lt;tt&gt;extension=oci8.so&lt;/tt&gt; and this was built with an Instant
Client.  The end result was an Oracle library clash.  &lt;/p&gt;

&lt;p&gt;The solution was to remove the &lt;tt&gt;LoadModule&lt;/tt&gt; line for PHP6.
You are unlikely to hit this exact problem, but it is a lesson in how
the environment needs to be valid.  Oracle messages can't always
pinpoint set up issues.  Care and methodical elimination of causes is
needed to resolve similar problems.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/RZ9E1JyGXZY" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/pecl_oci8_144_is_available</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/oracle_database_and_instant_cl</guid>
    <title>Oracle Database and Instant Client 11.2.0.2 are available on Linux</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/SRwCaK4H0A4/oracle_database_and_instant_cl</link>
        <pubDate>Wed, 15 Sep 2010 20:42:38 -0500</pubDate>
    <category>php</category>
    <category>11.2.0.2</category>
    <category>database</category>
    <category>instant_client</category>
    <category>oracle</category>
    <category>php</category>
    <category>release</category>
    <atom:summary type="html"> </atom:summary>        <description>&lt;p&gt;The Oracle 11.2.0.2 Instant Client libraries are now available on
Linux x86 and x86_64 platforms from the &lt;a
href="http://www.oracle.com/technetwork/database/features/instant-client/index-100365.html"
&gt;Instant Client&lt;/a&gt; home page.  And they'll soon be uploaded on &lt;a
href="https://linux.oracle.com" &gt;ULN&lt;/a&gt; for customers with Oracle
Linux support to install via the update server.&lt;/p&gt;

&lt;p&gt; If you are one of the (not so?) few users of command line PHP
then you might want to grab the new client because it has Oracle bug
9891199 fixed.  You'll also need &lt;a
href="http://pecl.php.net/package/oci8/1.4.3" &gt;OCI8 1.4.3&lt;/a&gt; from
PECL.  This combination together resolve a process shutdown delay that
irked some command line users.  You will still be able to connect back
to older versions of the DB, as is normal in the Oracle world.  &lt;/p&gt;

&lt;p&gt;The 11.2.0.2 patchset for the Oracle Database itself is available
in &lt;a
href="https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=10098816"
&gt;Patch 10098816&lt;/a&gt; from &lt;a href="https://support.oracle.com/" &gt;Oracle
Support&lt;/a&gt;.  Note &lt;a
href="https://support.oracle.com/CSP/main/article?cmd=show&amp;type=NOT&amp;id=1189783.1"
&gt;ID 1189783.1&lt;/a&gt; points out that this is a full database release and
does not need to be applied on top of Oracle 11.2.0.1.  According to
the note this is the new patching strategy going forward.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/SRwCaK4H0A4" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/oracle_database_and_instant_cl</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/php_web_database_auditing_auth</guid>
    <title>PHP Web Database Auditing, Authorization and Monitoring</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/g199E674bpA/php_web_database_auditing_auth</link>
        <pubDate>Fri, 10 Sep 2010 14:10:51 -0500</pubDate>
    <category>php</category>
    <category>audit</category>
    <category>authentication</category>
    <category>authorization</category>
    <category>db_control</category>
    <category>enterprise_manager</category>
    <category>monitor</category>
    <category>php</category>
    <category>security</category>
    <category>vpd</category>
    <atom:summary type="html"> </atom:summary>        <description>&lt;p&gt;Oracle Database "client identifiers" are cool because they let
Oracle Database trace and monitor DB resource usage for individual web
users, not just for the username that connected to the DB.  You know
how your web app files all connect using the same DB username like
&lt;tt&gt;$c = oci_connect('phpuser', 'secret', 'mydb')&lt;/tt&gt;, and so as a
consequence how all your DB monitoring scripts show &lt;tt&gt;PHPUSER&lt;/tt&gt;
as the main (or only) resource consumer?  Well by adding a simple
&lt;tt&gt;oci_set_client_identifier($c, 'chris')&lt;/tt&gt; call to your PHP files
you can get a DB audit trail of the operations that 'chris' does, and
can do real-time monitoring of the statements executed and see what
his DB personal resource usage is.  This can be used to track data access and highlight suspicious activity.  It can identify heavy
consumers or pinpoint the cause of a runaway situation.  It could also be used during
development to isolate the impact of a particular set of code changes
from the load that other developers are putting on the dev
database.&lt;/p&gt;

&lt;p&gt;Client identifiers can also be used to automatically restrict data
access.  How?  You create a PL/SQL function that simply returns the
text string of &lt;tt&gt;WHERE&lt;/tt&gt; clause and tell Oracle to automatically
apply that clause whenever a particular table is accessed.  The
function logic and/or returned string can reference the client id.
Just like a normal &lt;tt&gt;WHERE&lt;/tt&gt; clause, if the clause returns true
for a particular row, then the user sees that data, otherwise not.
The application doesn't need any changes or recoding - the clause is
automatically and consistently applied by Oracle.&lt;/p&gt;

&lt;p&gt;There is a lot more detail on the topic in a brand new OTN article
at &lt;a
href="http://www.oracle.com/technetwork/articles/dsl/php-web-auditing-171451.html"&gt;PHP
Web Auditing, Authorization and Monitoring with Oracle
Database&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks to everyone who reviewed and gave technical input to the
article.  It is much better as a result.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/g199E674bpA" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/php_web_database_auditing_auth</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/zend_framework_htacess_and_mul</guid>
    <title>Zend Framework .htacess and Multiple Controllers</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/Bc-uAmrNEhk/zend_framework_htacess_and_mul</link>
        <pubDate>Fri, 3 Sep 2010 14:23:14 -0500</pubDate>
    <category>php</category>
    <category>error</category>
    <category>framework</category>
    <category>php</category>
    <category>tip</category>
    <atom:summary type="html"> </atom:summary>        <description>&lt;p&gt;Here is a Zend Framework configuration tip that took me too long to
work out. I know other people have commented on it before me but often
installation instructions don't mention the error or associate it with
the required fix.  I'm filing this under the "posting it so I can find
it when I need it again" category.&lt;/p&gt;

&lt;p&gt;I tend to do all my PHP work in &lt;tt&gt;$HOME/public_html&lt;/tt&gt; and
configure all my various Apache versions similar to:&lt;/p&gt;

&lt;pre&gt;
UserDir public_html
&amp;lt;Directory "/home/*/public_html"&amp;gt;
 . . . 
&amp;lt;/Directory&amp;gt;
&lt;/pre&gt;

&lt;p&gt;This way it doesn't matter what Apache I start (or destroy).  All
my working PHP files remain accessible.  
&lt;/p&gt;&lt;p&gt;
I've been using NetBeans with
Frameworks recently.  I had no problem when doing a single controller
example in Zend Framework, so I knew everything was installed OK and
mod_rewrite was "working" fine.  But I would click a URL that should
be routed to a second controller and see an error like:&lt;/p&gt;

&lt;pre&gt;
The requested URL /home/cjones/public_html/MyProject/public/index.php
was not found on this server.
&lt;/pre&gt;

&lt;p&gt;The solution is to update the .htaccess file.  In the Netbeans
Projects pane navigate to &lt;tt&gt;Source Files &amp;gt; public &amp;gt;
.htaccess&lt;/tt&gt; or on disk edit
&lt;tt&gt;/home/cjones/public_html/MyProject/public/.htacces&lt;/tt&gt; and insert
a new &lt;tt&gt;RewriteBase&lt;/tt&gt; line so it reads:&lt;/p&gt;

&lt;pre&gt;
RewriteEngine On
&lt;b&gt;RewriteBase /~cjones/MyProject/public&lt;/b&gt;
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/Bc-uAmrNEhk" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/zend_framework_htacess_and_mul</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/php_oci8_143_is_available_on_p</guid>
    <title>PHP OCI8 1.4.3 is Available on PECL</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/4OhhqADpZ8M/php_oci8_143_is_available_on_p</link>
        <pubDate>Mon, 9 Aug 2010 16:03:15 -0500</pubDate>
    <category>php</category>
    <category>announcement</category>
    <category>oci8</category>
    <category>php</category>
    <category>release</category>
    <atom:summary type="html"> </atom:summary>        <description>&lt;p&gt;I've just posted the PHP OCI8 1.4.2 and OCI8 1.4.3 extensions on &lt;a
href="http://pecl.php.net/package/oci8"&gt; PECL&lt;/a&gt;. The change notes
are &lt;a
href="http://pecl.php.net/package-changelog.php?package=oci8&amp;release=1.4.3"
&gt;here&lt;/a&gt;. PHP OCI8 is the recommended database driver for using Oracle Database in the PHP scripting language.&lt;/p&gt;

&lt;p&gt;Why the two releases so close in time?  The OCI8 extension is one
of the few extensions that has a dual identity, being in both the PHP
bundle and in the PECL repository.  OCI8 1.4.2 contains the same code
as in the recent PHP 5.3.3 release.  The PECL bundle was made for
anyone who wants a PHP 5.5.3-identical version of OCI8 when installing
via PECL.&lt;/p&gt;

&lt;p&gt;PECL OCI8 1.4.3 has one extra fix (bug #51610) that came too late
in the PHP 5.3.3 release cycle and was deferred.  It has now been
merged to PHP's source code system and will also be in a subsequent
PHP distribution e.g. PHP 5.3.4 or later.  The bug impacts Oracle
users who run PHP OCI8 1.3+ using Oracle 10.2.0.4+ client libraries
and who use PHP as a command line scripting language. It causes a time
delay at PHP process termination.  Sites invoking PHP via a web server
are unlikely to have noticed any issue.  The "problem" had existed for
several years but suddenly became "hot" - perhaps when users started
to upgrade to PHP 5.3 which was the first full PHP release to include
the affected code. I was surprised how many people are using PHP for
command line processing.  The OCI8 fix requires an Oracle client
library patch for Oracle bug 9891199 before it will have an effect on
PHP.  There are several alternative PHP fixes postulated in bug #51610
that don't require an Oracle library patch, but they have limitations
(no DRCP support; potential memory leak in far edge cases) and haven't
been tested.&lt;/p&gt;

&lt;p&gt;The OCI8 extension can be installed on PHP 4.3.9 onwards.  The PHP
community would strongly suggest that anyone still using PHP 4
should upgrade to PHP 5 for overall stability and security reasons.
PHP 5.2 or PHP 5.3 are preferred.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/4OhhqADpZ8M" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/php_oci8_143_is_available_on_p</feedburner:origLink></item>
    <item>
    <guid isPermaLink="false">https://blogs.oracle.com/opal/entry/its_time_to_upgrade_to_zend_se</guid>
    <title>It's Time to Upgrade to Zend Server</title>
    <dc:creator>cj</dc:creator>
    <link>http://feedproxy.google.com/~r/ChristopherJonesOnPHP/~3/pEdMjlKYkX4/its_time_to_upgrade_to_zend_se</link>
        <pubDate>Wed, 23 Jun 2010 10:50:50 -0500</pubDate>
    <category>php</category>
    <category>end_of_life</category>
    <category>php</category>
    <category>support</category>
    <category>zend</category>
    <atom:summary type="html"> </atom:summary>        <description>&lt;p&gt;If you haven't upgraded already, our partners Zend have announced
the &lt;a
href="http://forums.zend.com/viewtopic.php?f=55&amp;t=6830"&gt;immediate end
of life&lt;/a&gt; for their older Zend Core and Zend Platform products.  The
replacement is &lt;a
href="http://www.oracle.com/technetwork/topics/php/zend-server-096314.html"&gt;Zend
Server&lt;/a&gt; which includes support for Oracle and MySQL databases and
has been available for over a year.&lt;/p&gt;

&lt;p&gt; Also announced today, Zend have a new &lt;a
href="http://www.zend.com/en/company/news/Press/zend-announces-general-availability-of-zend-server-cluster-manager"
&gt;cluster manager&lt;/a&gt; for Zend Server.  &lt;/p&gt;

&lt;p&gt;And if you're looking for more marketing collateral, see Zend's &lt;a
href="http://www.zend.com/topics/Zend-Oracle-DS-0510-R1-EN04.pdf"
&gt;Zend and Oracle Datasheet&lt;/a&gt;.&lt;/p&gt;

Update Aug 2010: Updated the ZS URL to point to upgraded OTN site.&lt;img src="http://feeds.feedburner.com/~r/ChristopherJonesOnPHP/~4/pEdMjlKYkX4" height="1" width="1"/&gt;</description>          <feedburner:origLink>https://blogs.oracle.com/opal/entry/its_time_to_upgrade_to_zend_se</feedburner:origLink></item>
  </channel>
</rss>

