<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Deployment of PHP Applications</title>
	<atom:link href="http://blog.digitalstruct.com/2009/10/07/deployments-php-applications/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.digitalstruct.com/2009/10/07/deployments-php-applications/</link>
	<description>Getting inside the mind of a php developer.</description>
	<lastBuildDate>Wed, 14 Jul 2010 10:51:42 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: Mike Willbanks</title>
		<link>http://blog.digitalstruct.com/2009/10/07/deployments-php-applications/comment-page-1/#comment-40874</link>
		<dc:creator>Mike Willbanks</dc:creator>
		<pubDate>Tue, 24 Nov 2009 02:25:14 +0000</pubDate>
		<guid isPermaLink="false">http://blog.digitalstruct.com/?p=105#comment-40874</guid>
		<description>Bradley - you are correct on both fronts, the main reason for having a pre and post deployment is to eliminate any potential downtime as well as having database changes that are capable for handling the current code base as you hit every server in an area.  

The biggest advantage that this has is that you can create the table structure for the current code base and then move it into what you need in the post.

For example: We need to add a new column to our user table, there are a few ways to do it.  Typically I would add a column in the pre-deployment where I want it to have a default and then in the post taking away the default as well as migrating the additional user records.  

Another example: We are moving to another table and it doesn&#039;t make sense to make the changes directly to the table, we make a new table that the new application will utilize when the application is deployed per server, then we migrate the existing data to the new app post-deployment.  For example, say you have a large table (1+ million records) you are going to take downtime if you modify it directly in relation to a commonly utilize table, however, if you utilize this strategy this is mitigated.</description>
		<content:encoded><![CDATA[<p>Bradley &#8211; you are correct on both fronts, the main reason for having a pre and post deployment is to eliminate any potential downtime as well as having database changes that are capable for handling the current code base as you hit every server in an area.  </p>
<p>The biggest advantage that this has is that you can create the table structure for the current code base and then move it into what you need in the post.</p>
<p>For example: We need to add a new column to our user table, there are a few ways to do it.  Typically I would add a column in the pre-deployment where I want it to have a default and then in the post taking away the default as well as migrating the additional user records.  </p>
<p>Another example: We are moving to another table and it doesn&#8217;t make sense to make the changes directly to the table, we make a new table that the new application will utilize when the application is deployed per server, then we migrate the existing data to the new app post-deployment.  For example, say you have a large table (1+ million records) you are going to take downtime if you modify it directly in relation to a commonly utilize table, however, if you utilize this strategy this is mitigated.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bradley Holt</title>
		<link>http://blog.digitalstruct.com/2009/10/07/deployments-php-applications/comment-page-1/#comment-40868</link>
		<dc:creator>Bradley Holt</dc:creator>
		<pubDate>Tue, 10 Nov 2009 23:40:58 +0000</pubDate>
		<guid isPermaLink="false">http://blog.digitalstruct.com/?p=105#comment-40868</guid>
		<description>Good article -- I also enjoyed your ZendCon UnCon session on the topic. However, there is one piece that I&#039;m still a little confused about. What is the purpose of having separate pre-deployment and post-deployment files? And, how exactly do you implement these two separate files? I think the purpose of the pre-deployment file is to make any database changes that are both backwards and forwards compatible (i.e. will run against either the old or the newly deployed application) and the purpose of the post-deployment file is to make any necessary database changes that may *not* be backwards compatible and so can only be run after deployment. Is this correct? Also, in your ZendCon UnCon session I thought you said that if you were using dbeploy you would have separate pre and post metadata tables. Can you go into more detail about how this would work? It seems odd to have two metatdata tables that are both responsibility for deploying the same database. Is the goal of all these pre and post files to have zero downtime due to database migrations or is there another benefit to this approach?</description>
		<content:encoded><![CDATA[<p>Good article &#8212; I also enjoyed your ZendCon UnCon session on the topic. However, there is one piece that I&#8217;m still a little confused about. What is the purpose of having separate pre-deployment and post-deployment files? And, how exactly do you implement these two separate files? I think the purpose of the pre-deployment file is to make any database changes that are both backwards and forwards compatible (i.e. will run against either the old or the newly deployed application) and the purpose of the post-deployment file is to make any necessary database changes that may *not* be backwards compatible and so can only be run after deployment. Is this correct? Also, in your ZendCon UnCon session I thought you said that if you were using dbeploy you would have separate pre and post metadata tables. Can you go into more detail about how this would work? It seems odd to have two metatdata tables that are both responsibility for deploying the same database. Is the goal of all these pre and post files to have zero downtime due to database migrations or is there another benefit to this approach?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel Cousineau</title>
		<link>http://blog.digitalstruct.com/2009/10/07/deployments-php-applications/comment-page-1/#comment-40834</link>
		<dc:creator>Daniel Cousineau</dc:creator>
		<pubDate>Fri, 09 Oct 2009 17:41:07 +0000</pubDate>
		<guid isPermaLink="false">http://blog.digitalstruct.com/?p=105#comment-40834</guid>
		<description>DBDeploy is a great resource, even if only for the fact that Phing ships with a DBDeploy plugin built straight in. It is pretty close to the metal though (deltas are SQL files partitioned into your UP and DOWN scripts).

If you decide to use it, the Doctrine ORM has very nice migration features like being able to run a diff against your schema changes and last built models to create your migration deltas.</description>
		<content:encoded><![CDATA[<p>DBDeploy is a great resource, even if only for the fact that Phing ships with a DBDeploy plugin built straight in. It is pretty close to the metal though (deltas are SQL files partitioned into your UP and DOWN scripts).</p>
<p>If you decide to use it, the Doctrine ORM has very nice migration features like being able to run a diff against your schema changes and last built models to create your migration deltas.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
