<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title>PHP and Oracle: Christopher Jones</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/opal/" />
   <link rel="self" type="application/atom+xml" href="http://blogs.oracle.com/opal/xml/rss.xml" />
   <id>tag:blogs.oracle.com,2009:/opal//31</id>
   <updated>2009-07-01T22:47:57Z</updated>
   <subtitle>Notes on the Oracle PHP Apache Linux (&quot;OPAL&quot;) stack, with bits of Python, Perl and Ruby for good luck</subtitle>
   <generator uri="http://www.sixapart.com/movabletype/">Movable Type Enterprise 1.52-en-voltron-r47459-20070213</generator>

<entry>
   <title>Yes, PHP 5.3 is here.  What does that mean?</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/opal/2009/07/yes_php_53_is_here_what_does_t.html" />
   <id>tag:blogs.oracle.com,2009:/opal//31.13154</id>
   
   <published>2009-07-01T19:06:50Z</published>
   <updated>2009-07-01T22:47:57Z</updated>
   
   <summary>Yesterday PHP 5.3 was released. It can be downloaded from the PHP site. This release has been the product of combined efforts from all areas of the community. While core PHP language developers may have the public profile of soccer...</summary>
   <author>
      <name>christopher.jones</name>
      
   </author>
         <category term="php" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="release" label="release" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/opal/">
      <![CDATA[<p>Yesterday <a href="http://www.php.net/archive/2009.php#id2009-06-30-1">PHP 5.3 was released</a>.  It can be <a href="http://php.net/downloads.php#v5.3.0">downloaded</a> from the PHP site. This release has been the product of combined efforts from all areas of the community.  While core PHP language developers may have the public profile of soccer goal-scorers, the project requires every position work together including release management, documentation and QA, packaging and building.  And off the field other work such as mentoring students and the migration from the CVS source code control system is just as important in driving the PHP project forward.  My thanks to all of you.</p>

<p>What is in PHP 5.3 for Oracle users?  My regular blog readers will know that it includes the OCI8 1.3 code by default (PHP 5.2 users can get this version from <a href="http://pecl.php.net/package/oci8">http://pecl.php.net/package/oci8</a> Windows DLLs are at <a href="http://downloads.php.net/pierre/">http://downloads.php.net/pierre/</a>).  They also know where to find the <a href="http://pecl.php.net/package-changelog.php?package=oci8">list of changes</a> in the 1.3 branch. (The main features are connection pooling and increased availability).</p>

<p>And what is coming downstream for PHP?  PHP 6 (with Unicode support) has a new breath of air due to the release manager now being able to devote more time.  Whenever bugs are fixed in PHP, the PHP 6 branch is kept in sync.  So, while there is a lot to do on key pieces, work is not starting from scratch.</p>

<p>There is some discussion about a PHP 5.4 release, and also whether PHP 5.4 should appear <em>after</em> PHP 6 so it can have further compatibility features to aid migration from 5.x to 6.x.  (There are already a couple of forward compatibility features in PHP 5.2, such as the binary string prefix syntax).</p>

<p>There are two conflicting goals: having new features available soon (meaning in a 5.4 release) and keeping developers focused on PHP 6 so it has some cool features that users want and so its development does not languish.  How these two desires will balance out remains to be seen.  As always it will be contributor driven.  So, if you are a PHP user, get involved.<br />
</p>]]>
      
   </content>
</entry>
<entry>
   <title>PHP 5.3 is days away; development merge restrictions are in place</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/opal/2009/06/php_53_is_days_away_developmen.html" />
   <id>tag:blogs.oracle.com,2009:/opal//31.13052</id>
   
   <published>2009-06-25T21:35:41Z</published>
   <updated>2009-06-25T21:46:57Z</updated>
   
   <summary>PHP 5.3 is currently due to go production on Tuesday 30th June 2009. The release managers are working hard to get all the final pieces in place. In the PHP core development community there has been a tiny bit of...</summary>
   <author>
      <name>christopher.jones</name>
      
   </author>
         <category term="php" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="release" label="release" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="releasemanagement" label="release management" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/opal/">
      <![CDATA[<p>PHP 5.3 is currently <a href="http://pooteeweet.org/blog/1503">due to go production</a> on Tuesday 30th June 2009.  The release managers are working hard to get all the final pieces in place.</p>

<p>In the PHP core development community there has been a tiny bit of good-natured grumbling about a clamp down on code merges. The experienced developers actually recognize the need for this restriction.</p>

<p>Restricting what can be merged prior to release is important.  Why?  Because any code change has the potential for unforeseen destabilization or could introduce a whole new set of problems.  Also any change distracts the RMs (and others) from review and testing of more critical areas.  The voice of experience speaks.</p>

<p>Think about the worst case: merging a brand new feature.  If this happens just before the production release, then there is no time for the feature to be evaluated, documented, tested . . . .  New features typically aren't allowed to be added after the Alpha release of a project (PHP is actually a little lax about Alpha/Beta terminology here).  As the production release date approaches, bugs must be increasingly more critical in order for fixes to be merged.</p>

<p>On the other hand, merge restrictions introduce one big problem: somehow the team needs to revisit changes merged by eager developers to the other PHP branches (PHP 5.2, PHP 6).  Someone has to come back and merge them into a future 5.3 patchset.  This is one of the reasons programs need good source code control reporting and tooling.</p>

<p>What can you do for PHP 5.3 today?  Test it.  Snapshots of PHP are at <a href="http://snaps.php.net/ ">http://snaps.php.net/ </a>.</p>

<p>Start by reviewing the UPGRADING guide.  And give a yell if you come across a feature change that isn't documented or if something breaks.  The PHP bug database is at <a href="http://bugs.php.net/">http://bugs.php.net/</a>.<br />
</p>]]>
      
   </content>
</entry>
<entry>
   <title>Keeping Web Applications Lean and Mean at Dutch PHP Conference</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/opal/2009/06/keeping_web_applications_lean_1.html" />
   <id>tag:blogs.oracle.com,2009:/opal//31.12805</id>
   
   <published>2009-06-08T18:59:18Z</published>
   <updated>2009-06-08T19:41:01Z</updated>
   
   <summary>I&apos;m really looking forward to the Dutch PHP conference this week. Robert Brouwer from Oracle Netherlands is talking on Friday at 11:45 about Keeping Web Applications Lean and Mean. The need for monitoring is something that comes up all the...</summary>
   <author>
      <name>christopher.jones</name>
      
   </author>
         <category term="php" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="dpc" label="#dpc" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="conference" label="conference" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="holland" label="holland" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="installfest" label="installfest" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="netherlands" label="netherlands" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="phpconference" label="php conference" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/opal/">
      <![CDATA[<p>I'm really looking forward to the <a href="http://www.phpconference.nl/">Dutch PHP conference</a> this week. </p>

<p><strong>Robert Brouwer from Oracle Netherlands is talking on Friday at 11:45 about <a href="http://www.phpconference.nl/schedule/talks#DPC0924">Keeping Web Applications Lean and Mean</a>.  </strong></p>

<p>The need for monitoring is something that comes up <em>all</em> the time in discussions about burgeoning sites. In last week's SF PHP meetup (<a href="http://blogs.oracle.com/opal/2009/06/there_are_php_jobs_out_there.html">see my previous post</a>) SonicLiving mentioned its importance several times, and Steve said a chunk of his time each day was taken up reviewing logs.</p>

<p>There are all sorts of web metrics that can be gathered. Robert has a lot of experience in this area and his talk will show you what might and might be useful for your site. At the end of the session, Robert will spend a few minutes discussing the product he builds for web monitoring: <a href="http://www.oracle.com/technology/products/oem/prod_focus/realuserexperienceinsight.html">Real User Experience Insight</a>. The front end of this is written in PHP (Robert's been a PHP user since the days of PHP 3) making the presentation even more interesting for PHP developers. RUEI is developed in the Netherlands, so there is a local success story too!</p>

<p><strong>On Saturday at 10:30, I'll be giving a tutorial-style InstallFest session</strong>.</p>

<p>I'm going to do a full live demonstration of installing and using Oracle Database with PHP. I'll show Oracle's free database and some of the free applications, and show how to write efficient Oracle PHP applications that work with any Oracle Database "edition" (as we call the database feature packages)</p>

<p>There will be a special guest appearance by <strong>PHP ElePHPants</strong> looking for a new home</p>

<p>    * Learn how easy it is to install Oracle Database<br />
    * Learn how to use Oracle's free database management and development tools<br />
    * Learn best architecture and coding practices for developing fast PHP database applications<br />
    * Learn what limits application scalability and how to overcome these limits<br />
    * See the benefits of connection pooling and hear tips on connection management<br />
    * See best and worst practice code examples in action</p>

<p>After lunch if there is demand (let us know during the first session) we'll be available to show Oracle Enterprise Linux and Oracle VM installation (<strong>start your own cloud!</strong>) and, if you want to bring your own hardware, we can assist with installing any or all of Oracle Enterprise Linux, Oracle Database, and PHP.</p>

<p>Finally, here is one picture I took during my very brief stay a few years ago. You can see why I want to return.</p>

<p><img src="http://farm1.static.flickr.com/36/79996842_3990c5a78f_d.jpg"></p>]]>
      
   </content>
</entry>
<entry>
   <title>There are PHP Jobs out there...</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/opal/2009/06/there_are_php_jobs_out_there.html" />
   <id>tag:blogs.oracle.com,2009:/opal//31.12765</id>
   
   <published>2009-06-05T19:36:35Z</published>
   <updated>2009-06-05T22:50:54Z</updated>
   
   <summary>Conference organizers tell me business use-case studies don&apos;t do well. Last night&apos;s San Francisco PHP Meetup would have proved them wrong. A big crowd was paying very close attention and asking lots of questions to the SonicLiving crew, whose talk...</summary>
   <author>
      <name>christopher.jones</name>
      
   </author>
         <category term="php" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="interviewing" label="interviewing" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="meetup" label="meetup" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/opal/">
      <![CDATA[<p>Conference organizers tell me business use-case studies don't do well.</p>

<p>Last night's <a href="http://http://www.sfphp.org/calendar/10472112/">San Francisco PHP Meetup</a> would have proved them wrong.  A big crowd was paying very close attention and asking lots of questions to the <a href="http://sonicliving.com/">SonicLiving</a> crew, whose talk covered the whole gamut from implementation details to how they do business.</p>

<p>One of the questions towards the end was how they hired.  Anecdotes were told about a programmer with a corporate "let's spend a month writing a design" attitude and, at the other end of the spectrum, about the programmer who turned out not to be able to work in team "I deleted this function because I didn't understand it".  For a start-up company it's important to get people who are able to put ideas in production quickly so user uptake can determine good from bad, and resources allocated to enhancing the successful ideas.</p>

<p>Later, in the post-talk group announcements, three other people stood up and said their companies were looking for good PHP developers.  Looks like there is demand for your skills out there . . . .</p>

<p>And how exactly do you hire?  There was no real consensus on where to find people. Good people already tend to have jobs. Use all the channels from Craigslist to word of mouth.  Maybe even agencies!</p>

<p>Afterwards, I was in a post-talk discussion on interviewing techniques.  Mariano Peterson (the assistant/co-organizer of the meetup) said that when interviewed, he had found it more interesting when he was told to write and brainstorm on a whiteboard instead of just being allowed to talk.  I've always liked being able to have a free flowing discussion too.</p>

<p>But one of the verbal techniques I've found successful for first interviews is the "STAR" system: Situation-Task-Action-Result.  You can use it as a interviewer.  You can also use it to showcase yourself as an interviewee.</p>

<p>The method is designed to find out what you personally have done in the past.  An interviewer might ask for a situation you've been in, what your exact task was, what action you physically took, and what the end result was.  Much information on the STAR technique is available on the web.</p>

<p>For interviewees used to working in teams, it can be hard to stop saying "we" in every sentence: "we implemented a widget".  As an interviewer this is frustrating since you have no idea what the person actually did on the project.  Patience is needed.</p>

<blockquote>
  Me: "Oh a widget you say?  What was your role in creating the widget?".
<blockquote>
</blockquote>
  Them: "We worked on a fantastic color scheme that added great value to the appeal and success of the widget".
</blockquote>
<blockquote>
  Me (thinking): "Arrrrrgh!"
</blockquote>

<p>At this stage the interviewer still has no idea what the interviewee actually did on the project - did they do research, mix paints, coordinate the project etc?  All those are valuable skills but the interviewer wants to understand what the interviewee is capable of and what their interests, strengths and weaknesses are.</p>

<p>Thinking about your skills in the context of STAR is also a great way to prepare yoruself for interviews.</p>

<p>Thanks to CBS Interactive (formerly C|Net) for hosting the PHP Meetup and the Gabe and Steve from SonicLiving for sharing so much information.<br />
</p>]]>
      
   </content>
</entry>
<entry>
   <title>Perl DBD::Oracle 1.23 released</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/opal/2009/05/perl_dbdoracle_123_released.html" />
   <id>tag:blogs.oracle.com,2009:/opal//31.12052</id>
   
   <published>2009-05-07T20:03:19Z</published>
   <updated>2009-05-07T20:14:04Z</updated>
   
   <summary>In the &quot;I guess I still need to blog until that Twitter thing becomes popular&quot; category, let me say here that the Perl DBD::Oracle 1.23 module has been released by Pythian. John Scoles has a fresh article on the main...</summary>
   <author>
      <name>christopher.jones</name>
      
   </author>
         <category term="perl" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="dbd" label="dbd" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="perl" label="perl" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/opal/">
      <![CDATA[<p>In the "I guess I still need to blog until that Twitter thing becomes popular" category,  let me say here that the <a href="http://www.pythian.com/news/2273/dbdoracle-123-released">Perl DBD::Oracle 1.23 module</a> has been released by Pythian.  John Scoles has a fresh article on the main new feature, better <a href="http://www.pythian.com/news/2341/dbd-oracle-better-embedded-types ">embedded type support</a>.  Nice work! The bar has certainly been raised for dynamic language support of Oracle features.  </p>

<p>DRCP connection pooling support is on the roadmap for the "beer" release 1.24   <a href="http://twitter.com/paulvallee/statuses/1698629135">according to Paul Vallee</a> of Pythian.</p>

<p>If you were wondering about the naming, 1.23 is the "Sesame Street" edition because it is 1-2-3.  The 1.24 release is the "beer" release presumably because there are 24 cans in a slab of beer.</p>]]>
      
   </content>
</entry>
<entry>
   <title>PHP 5.3 Release Candidate 2 is available</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/opal/2009/05/php_53_release_candidate_2_is.html" />
   <id>tag:blogs.oracle.com,2009:/opal//31.12049</id>
   
   <published>2009-05-07T17:55:43Z</published>
   <updated>2009-05-07T18:23:27Z</updated>
   
   <summary>PHP 5.3 is approaching the pointy end of development and it&apos;s worth me blogging so awareness and testing increases before general release. The second release candidate for PHP 5.3 has been announced. Source code is http://downloads.php.net/johannes/. Windows binaries are at...</summary>
   <author>
      <name>christopher.jones</name>
      
   </author>
         <category term="php" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="53" label="5.3" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="releasecandidate" label="release candidate" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="testing" label="testing" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/opal/">
      <![CDATA[<p>PHP 5.3 is approaching the pointy end of development and it's worth me blogging so awareness and testing increases before general release. </p>

<p>The second release candidate for PHP 5.3 has been <a href="http://news.php.net/php.internals/43868">announced</a>. Source code is <a href="http://downloads.php.net/johannes/">http://downloads.php.net/johannes/</a>.  Windows binaries are at <a href="http://windows.php.net/qa/">http://windows.php.net/qa/</a>.</p>

<p>There is a  wiki page with <a href="http://wiki.php.net/doc/scratchpad/upgrade/53">upgrading notes</a>. Updates are welcome either directly or via discussion on the "internals" <a href="http://php.net/mailing-lists.php">mail list</a>.</p>

<p>In a parallel note, there is a surge of energy around this year's <a href="http://qa.php.net/testfest.php">PHP TestFest</a>.  The <a href="http://wiki.php.net/qa/testfest">wiki page</a> contains lots of useful information - including mentor lists and reusable presentations -  about running and contributing to your own local testfests.</p>

<p>The PHP <a href="http://gcov.php.net/PHP_5_3/lcov_html/">gcov code coverage numbers</a> show there are lots of areas that can be improved to.</p>

<p>If you're coming to <a href="http://tek.mtacon.com/">PHP|Tek</a> (in Chicago from May 19th), there will be a <a href="http://c7y.phparch.com/c/entry/1/news,20090506-phptek_ending_keynote_and_events_announced">testfest</a> one evening.  See you there.<br />
</p>]]>
      
   </content>
</entry>
<entry>
   <title>Singapore PHP Meeting on 6th May is at Oracle</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/opal/2009/04/singapore_php_meeting_on_6th_m.html" />
   <id>tag:blogs.oracle.com,2009:/opal//31.11890</id>
   
   <published>2009-04-30T18:21:16Z</published>
   <updated>2009-04-30T18:31:07Z</updated>
   
   <summary>Blair Layton, Senior Manager of Oracle&apos;s APAC Developer Program is talking at the next Singapore PHP meeting on: • Oracle Database Fundamentals for PHP Developers • Using SQL Developer with MySQL and Oracle • Deploying Oracle Database to the Amazon...</summary>
   <author>
      <name>christopher.jones</name>
      
   </author>
         <category term="php" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="apac" label="APAC" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="developer" label="developer" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="meeting" label="meeting" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="singapore" label="singapore" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="usergroup" label="usergroup" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/opal/">
      <![CDATA[<p>Blair Layton, Senior Manager of Oracle's APAC Developer Program is talking at the next Singapore PHP meeting on:</p>

<p>   •  Oracle Database Fundamentals for PHP Developers<br />
   •  Using SQL Developer with MySQL and Oracle<br />
   •  Deploying Oracle Database to the Amazon Cloud with live demo of PHP Application Scalability</p>

<p>Date: 6 May 2009<br />
Venue: Oracle Corporation, 6 Temasek Boulevard, #18-01 Suntec Tower 4, Singapore 038986<br />
Time: 7.30p.m. - 10.00p.m.</p>

<p>You can RSVP on <a href="http://www.facebook.com/event.php?eid=76184428780">Facebook</a> or via <a href="mailto:developers_sg@oracle.com">email</a>.</p>]]>
      
   </content>
</entry>
<entry>
   <title>PHP Projects for GSOC 2009</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/opal/2009/04/php_projects_for_gsoc_2009_1.html" />
   <id>tag:blogs.oracle.com,2009:/opal//31.11691</id>
   
   <published>2009-04-21T22:14:45Z</published>
   <updated>2009-04-21T22:22:44Z</updated>
   
   <summary>The Google &quot;Mid-year&quot; of Code projects for students to work on improvements to PHP have been finalized: http://socghop.appspot.com/org/home/google/gsoc2009/php. If you want to follow along there is a mail list which can be subscribed to on http://www.php.net/mailing-lists.php. If you weren&apos;t selected...</summary>
   <author>
      <name>christopher.jones</name>
      
   </author>
         <category term="php" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="student" label="student" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/opal/">
      <![CDATA[<p>The Google "Mid-year" of Code projects for students to work on improvements to PHP have been finalized: <a href="http://socghop.appspot.com/org/home/google/gsoc2009/php">http://socghop.appspot.com/org/home/google/gsoc2009/php</a>.</p>

<p>If you want to follow along there is a <a href="http://news.php.net/group.php?group=php.gsoc">mail list</a> which can be subscribed to on <a href="http://www.php.net/mailing-lists.php">http://www.php.net/mailing-lists.php</a>.</p>

<p>If you weren't selected for GSOC, you are still most welcome to help contribute to PHP.  Jump onto the internals mail list and make yourself known. Small contributions and bug fixes are a good way to get into the rhythm of the development process.</p>]]>
      
   </content>
</entry>
<entry>
   <title>12 years of Oracle extensions in PHP</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/opal/2009/04/12_years_of_oracle_extensions.html" />
   <id>tag:blogs.oracle.com,2009:/opal//31.11454</id>
   
   <published>2009-04-17T08:00:01Z</published>
   <updated>2009-04-17T08:08:06Z</updated>
   
   <summary>The oracle.c and oracle.h files for the &quot;oracle&quot; PHP extension were checked into the php/fi 2.0 source code by Stig Sæther Bakken on this day in 1997. (Hat tip to Johannes Schlüter for leading me to the files in CVS)...</summary>
   <author>
      <name>christopher.jones</name>
      
   </author>
         <category term="php" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="community" label="community" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="history" label="history" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/opal/">
      <![CDATA[<p>The <a href="http://cvs.php.net/viewvc.cgi/phpfi/src/oracle.c?revision=1.1&view=markup">oracle.c</a> and <a href="http://cvs.php.net/viewvc.cgi/phpfi/src/oracle.h?revision=1.1&view=markup">oracle.h</a> files for the "<strong>oracle</strong>" PHP extension were checked into the php/fi 2.0 source code by Stig Sæther Bakken on this day in 1997.  (Hat tip to Johannes Schlüter for leading me to the files in CVS)</p>

<p>In the last 12 years PHP has progressed and grown in many directions.  Along the way, the "<strong>oci8</strong>" extension replaced "<strong>oracle</strong>" to become the recommended Oracle database extension for PHP, and the "<strong>pdo_oci</strong>" driver was introduced for the PDO extension.  Many fine people have contributed.  I'm proud for Oracle to be part of the PHP community.</p>

<p>Here's looking to the next 12 years.</p>]]>
      
   </content>
</entry>
<entry>
   <title>Oracle DB 10.2 for Mac OS X 64bit</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/opal/2009/04/oracle_db_102_for_mac_os_x_64b.html" />
   <id>tag:blogs.oracle.com,2009:/opal//31.11490</id>
   
   <published>2009-04-10T21:29:14Z</published>
   <updated>2009-04-10T21:37:06Z</updated>
   
   <summary>I just saw Kris Rice&apos;s tweet that Oracle Database 10.2.0.4 is available for Mac OS X 64 bit: http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10204macsoft_x86-64.html You can get 32 &amp; 64 bit Oracle Instant Client libraries for linking client tools &amp; programs from: http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/intel_macsoft.html The 32...</summary>
   <author>
      <name>christopher.jones</name>
      
   </author>
         <category term="General" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="database" label="database" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="download" label="download" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="install" label="install" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="mac" label="mac" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="rdbms" label="rdbms" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="software" label="software" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/opal/">
      <![CDATA[<p>I just saw <a href="http://krisrice.blogspot.com/">Kris Rice's</a> <a href="http://twitter.com/krisrice/status/1492420705">tweet</a> that Oracle Database 10.2.0.4 is available for Mac OS X 64 bit:<br />
<a href="http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10204macsoft_x86-64.html">http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10204macsoft_x86-64.html</a></p>

<p>You can get 32 & 64 bit Oracle Instant Client libraries for linking client tools & programs from: <a href="http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/intel_macsoft.htm">http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/intel_macsoft.htm</a>l</p>

<p>The 32 bit old-style full client is on: <a href="http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/intel_macsoft.html">http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10204macsoft.html</a></p>]]>
      
   </content>
</entry>
<entry>
   <title>Sizing the number of DRCP connection brokers on Oracle RAC</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/opal/2009/04/sizing_the_number_of_drcp_conn.html" />
   <id>tag:blogs.oracle.com,2009:/opal//31.11450</id>
   
   <published>2009-04-09T20:19:30Z</published>
   <updated>2009-04-09T20:25:02Z</updated>
   
   <summary>The Oracle 11g DRCP connection pooling &quot;connection broker&quot; process handles incoming connection requests. It also retains a socket for idle connections, thus enabling faster reconnection. Large web applications with multiple mid-tier Apache servers typically need to increase the database server...</summary>
   <author>
      <name>christopher.jones</name>
      
   </author>
         <category term="php" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="bug" label="bug" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="drcp" label="drcp" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="rac" label="rac" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/opal/">
      <![CDATA[<p>The Oracle 11g DRCP connection pooling "connection broker" process handles incoming connection requests.  It also retains a socket for idle connections, thus enabling faster reconnection.  Large web applications with multiple mid-tier Apache servers typically need to increase the database server OS limit on file descriptors so the broker can receive all the connections and work to full capacity.</p>

<p>If you start RAC with the cluster services tool "srvctl", a buglet in RAC 11.1.0.6 & 11.1.0.7 (the latest version at time of writing) resets the OS limit back down on nodes.  RAC DBAs might notice an alert file message:</p>

<blockquote>"WARNING:Oracle instance running on a system with low open file descriptor limit. Tune your system to increase this limit to avoid severe performance degradation."</blockquote>

<p>DRCP users on RAC who see connection errors, but don't notice this alert message, have compensated for the throttling by increasing the number of brokers to spread the connection load.  This isn't so necessary.  Looking at the DRCP scalability benchmark in the <a href="http://www.oracle.com/technology/tech/php/pdf/php-scalability-ha-twp.pdf ">PHP Scalability and Availability</a> white paper you can see that only one broker was needed the 20,000 concurrent connections.  And the default configuration "max connections per broker" setting is 40,000.</p>

<p>The recommendation is to apply the simple resource limit script patch given in Oracle bug 7483048 (also see bug 7308467) and keep the number of connection brokers to a minimum.  </p>

<p>The number of brokers required can be calculated by dividing the maximum number of open connections by the number of file descriptors per process or other OS limit on processes.  The broker's hand-off task is not intensive but having more than one broker can spread processing over multiple CPUs and will reduce the impact if one of the broker processes crashes (planning for the worst case scenario here).  You could find that just two or three brokers is all that the biggest sites need.</p>

<p>The RAC bug has been fixed in our next major version of the DB but I don't know yet whether it will be back ported to any future 11.1 patch set.  Note the impact of the bug isn't just to DRCP.  If you see the alert message above, check out the patch.</p>]]>
      
   </content>
</entry>
<entry>
   <title>Reducing diskspace of your Oracle Instant Client install</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/opal/2009/04/reducing_diskspace_of_your_ora.html" />
   <id>tag:blogs.oracle.com,2009:/opal//31.11393</id>
   
   <published>2009-04-08T08:13:30Z</published>
   <updated>2009-04-08T08:18:42Z</updated>
   
   <summary>Most PHP OCI8 users link PHP with the Oracle Instant Client (IC) libraries that handle the underlying &quot;client&quot; (i.e PHP OCI8 extension) communication with the database. IC is relatively small for the features it gives, and is very easy to...</summary>
   <author>
      <name>christopher.jones</name>
      
   </author>
         <category term="php" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="install" label="install" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="instantclient" label="instant client" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/opal/">
      <![CDATA[<p>Most PHP OCI8 users link PHP with the <a href="http://www.oracle.com/technology/tech/oci/instantclient/index.html">Oracle Instant Client</a> (IC) libraries that handle the underlying "client" (i.e PHP OCI8 extension) communication with the database.  IC is relatively small for the features it gives, and is very easy to install. A ZIP or RPM download unpacks a few libraries.</p>

<p>Despite hearing the "disk is cheap" mantra most of my professional life, sometimes less is more, such as when it comes to reducing deployment and backup costs.  Although IC isn't particularly big - and it's getting relatively smaller all the time - there are two ways to reduce its size:</p>

<p>1. Use the Basic Lite instead of Basic package.  This is much smaller because it only supports common character sets and only has English error messages.</p>

<p>2. Remove the JDBC, ODBC and OCCI libraries.  These libraries are not needed by PHP OCI8.</p>

<p>The IC Basic package libraries needed for PHP OCI8 are given in <a href=" http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28395/oci01int.htm#sthref62">table 1-3 of the OCI Manual</a>:</p>

<p>   On Linux:</p>

<p>     libclntsh.so.11.1<br />
     libnnz11.so<br />
     libociei.so</p>

<p>   Or on Windows:<br />
     oci.dll<br />
     oraociei11.dll<br />
     orannzsbb11.dll</p>

<p>The IC Basic Lite package libraries needed for PHP OCI8 are given in <a href="http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28395/oci01int.htm#sthref75">table 1-5 of the OCI manua</a>l:<br />
   </p>

<p>   On Linux:</p>

<p>     libclntsh.so.11.1<br />
     libnnz11.so<br />
     libociicus.so</p>

<p> Or on Windows:</p>

<p>     oci.dll<br />
     oraociicusll.dll<br />
     orannzsbb11.dll</p>

<p>If using the ZIP files on Linux, don't forget to create the symbolic link:</p>

<p>ln -s libclntsh.so.11.1 libclntsh.so</p>

<p>before building PHP OCI8.</p>]]>
      
   </content>
</entry>
<entry>
   <title>New PHP Oracle FAQ Wiki</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/opal/2009/04/new_php_oracle_faq_wiki.html" />
   <id>tag:blogs.oracle.com,2009:/opal//31.11392</id>
   
   <published>2009-04-07T20:40:56Z</published>
   <updated>2009-04-07T20:57:39Z</updated>
   
   <summary>I&apos;ve updated the old Oracle PHP FAQ and the Oracle PHP Troubleshooting FAQs that were hosted by Oracle Technology Network (OTN). We&apos;ve redirected the old FAQ pages to a new wiki page: http://wiki.oracle.com/page/PHP+Oracle+FAQ with the updated content. Feel free to...</summary>
   <author>
      <name>christopher.jones</name>
      
   </author>
         <category term="php" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="faq" label="faq" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="wiki" label="wiki" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/opal/">
      <![CDATA[<p>I've updated the old Oracle PHP FAQ and the Oracle PHP Troubleshooting FAQs that were hosted by Oracle Technology Network (OTN).  We've redirected the old FAQ pages to a  new wiki page: <a href="http://wiki.oracle.com/page/PHP+Oracle+FAQ">http://wiki.oracle.com/page/PHP+Oracle+FAQ</a> with the updated content.  Feel free to create an account and make updates. Hosting the FAQ on a wiki seems appropriate because PHP is open source and grows by the value of everyone's contributions.</p>]]>
      
   </content>
</entry>
<entry>
   <title>PHP OCI8 Signal Handling and --enable-sigchild</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/opal/2009/03/php_oci8_signal_handling_and_e_1.html" />
   <id>tag:blogs.oracle.com,2009:/opal//31.10966</id>
   
   <published>2009-03-24T02:58:15Z</published>
   <updated>2009-03-24T04:07:10Z</updated>
   
   <summary>I am no longer blindly recommending using --enable-sigchild when configuring PHP with the OCI8 extension. I used to do this as a catch-all. It might have saved some users grief, and did little harm. With changes in recent versions of...</summary>
   <author>
      <name>christopher.jones</name>
      
   </author>
         <category term="php" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="install" label="install" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="signal" label="signal" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/opal/">
      <![CDATA[<p>I am no longer blindly recommending using --enable-sigchild when configuring PHP with the OCI8 extension.  I used to do this as a catch-all.  It might have saved some users grief, and did little harm. With changes in recent versions of Oracle and my gut feel about common usage, it will be less confusing not to mention it as a general suggestion.</p>

<p>Excuse me only offering guidelines here and not a definitive best-practice: signal handling is port specific; there are many ways to configure PHP; there is much choice in which extensions to include; and there are many different web servers that PHP can run under.</p>

<p>The old heuristic for OCI8 users was to configure PHP with --enable-sigchild if you saw defunct Oracle server processes - the process that handle the work for each connected user.  Each PHP process communicates with its own server process.  </p>

<p>There are some side effects with --enable-sigchild.  On my OS I know pclose() returns failure; several PHP bug reports exist for this and PHP code has been patched and broken (?) in this area.</p>

<p><em>My New --enable-sigchild Usage Heuristic:</em></p>

<blockquote>
<p>Only if you see defunct "zombie" Oracle server processes then start PHP/Apache with the Oracle Net option BEQUEATH_DETACH=YES in your sqlnet.ora, or, to keep the setting specific to PHP, set your environment starting Apache:</p>

<pre>
    export BEQUEATH_DETACH=YES
</pre>

<p>  <p>If this doesn't help, then consider building PHP with --enable-sigchild.</p><br />
</blockquote></p>

<p>Defunct processes might happen if the Oracle code in PHP forks the Oracle server process (called "bequeathing") and the signal handlers in PHP, as the parent of the server process, do not correctly clean up the server process when a database connection is closed.  The BEQUEATH_DETACH=YES option causes the server processes to do a double fork and be inherited by "init", which prevents defunct zombies. Oracle 10g onwards check for signal handler clashes and automatically turn on BEQUEATH_DETACH, reducing the need for you to set it.  It's not on by default because it adds a few extra CPU cycles and the OS parent process id becomes 1, making it slightly harder to identify the relationship between a server process and the application process using it.  You might need to manually set it on if signal handlers are changed after Oracle has done its heuristic check.</p>

<p>You should never need to configure PHP with --enable-sigchild or set BEQUEATH_DETACH=YES if PHP is "remote" from the DB server.  PHP can be "remote" physically or because PHP is linked with Oracle Instant Client or linked with different Oracle libraries to those used by the DB - where you use an Easy Connect or tnsnames.ora connection string. You also don't need to change signal handling if you use Shared (MTS) or Pooled Oracle servers.  These are the cases where PHP does not fork the Oracle server process directly.  The Oracle Net listener does the forking instead and PHP's signal handling won't affect Oracle server process cleanup.</p>

<p>So the new heuristic is the same as the old heuristic.  But the suggested remedy is different, and I feel the frequency of seeing zombies is low because of the uptake in improved versions of Oracle and because of the common separation of the PHP mid-tier from the database servers.</p>

<p>Customers with metalink.oracle.com accounts might care to look at Note 452122.1, "The use of Client signal handlers and Oracle BEQUEATH Connections" which explains more about BEQUEATH_DETACH and forking.</p>

<p>Let me know your experiences.<br />
</p>]]>
      
   </content>
</entry>
<entry>
   <title>OCI8 1.3 Extension for PHP 5.2 on Windows and Linux</title>
   <link rel="alternate" type="text/html" href="http://blogs.oracle.com/opal/2009/03/oci8_13_extension_for_php_52_o.html" />
   <id>tag:blogs.oracle.com,2009:/opal//31.10958</id>
   
   <published>2009-03-23T22:23:44Z</published>
   <updated>2009-03-23T22:46:09Z</updated>
   
   <summary>If you&apos;re using PHP 5.2 I would generally recommend upgrading the OCI8 extension to 1.3 for better behavior, bug fixes and features. This new OCI8 has substantially refactored connection code and adds support for DRCP Connection Pooling, FAN, and External...</summary>
   <author>
      <name>christopher.jones</name>
      
   </author>
         <category term="php" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="install" label="install" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="linux" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="php" label="php" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="windows" label="windows" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://blogs.oracle.com/opal/">
      <![CDATA[<p>If you're using PHP 5.2 I would generally recommend upgrading the OCI8 extension to 1.3 for better behavior, bug fixes and features. This new OCI8 has substantially refactored connection code and adds support for DRCP Connection Pooling, FAN, and External Authentication. PHP 5.2 is in maintenance mode so it is inappropriate to include OCI8 1.3 there by default. Instead, OCI8 needs to be upgraded using <a href="http://pecl.php.net/oci8/">PECL</a>.</p>

<p>See the newly updated <a href="http://www.oracle.com/technology/pub/notes/technote_php_instant.html">Installing PHP and the Oracle Instant Client for Linux and Windows</a> for details. You can use the instructions even if not using Instant Client. This note also links to PHP 5.2 Windows DLLs for OCI8 1.3.5 thanks to Pierre Joye.</p>

<p>Also in the PHP world, PHP 5.3 RC1 source code has just been tagged and release is imminent. Please test it when it is available in the next few days. PHP 5.3 already contains OCI8 1.3.<br />
</p>]]>
      
   </content>
</entry>

</feed>
