Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:66779 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 96049 invoked from network); 24 Mar 2013 10:52:32 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 24 Mar 2013 10:52:32 -0000 Authentication-Results: pb1.pair.com smtp.mail=davidkmuir@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=davidkmuir@gmail.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.160.52 as permitted sender) X-PHP-List-Original-Sender: davidkmuir@gmail.com X-Host-Fingerprint: 209.85.160.52 mail-pb0-f52.google.com Received: from [209.85.160.52] ([209.85.160.52:55092] helo=mail-pb0-f52.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id A4/22-08729-EEADE415 for ; Sun, 24 Mar 2013 05:52:31 -0500 Received: by mail-pb0-f52.google.com with SMTP id ma3so3725355pbc.11 for ; Sun, 24 Mar 2013 03:52:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:message-id:date:from:user-agent:mime-version:to:cc :subject:references:in-reply-to:content-type :content-transfer-encoding; bh=BvC8/2YMcJEjGZTXeBHc5RQDoufrmVySn3hN8EMzL8w=; b=IWeSRmZWIilSL/BNh3jSrFsTJgKP8sAJrtlQmc+uWtaO1YbHlrACgx7OO4QCxQ4gQy gY6W5R1k4eoKtyIJB8TJVZKgwA05Y3Z3nSG+2jTaxG+Q5ZZcyzQz2tfp5nOuKL7SYipu ztzxIF9xyuIpEUdUVSI/bW95mKtAk/sa6p4p4G/MzDdGX7xtLPZUOOBcCiECVsl+NS7q IzCbQvFdu6u4KHpNpdlpJo9DYtd0NmjhukM5MFEdy1uIALGU1vNbAOjeztZDbHtm5xw7 QKx5bxuohzWN9PoewDPiKktwujn3z6Kcs+vJnUeZyrhR53aFEcbSntai1pOo/fN308ps Hzug== X-Received: by 10.66.26.234 with SMTP id o10mr12152594pag.205.1364122347697; Sun, 24 Mar 2013 03:52:27 -0700 (PDT) Received: from [192.168.0.7] (115-64-165-88.static.tpgi.com.au. [115.64.165.88]) by mx.google.com with ESMTPS id ef3sm10362963pad.20.2013.03.24.03.52.25 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 24 Mar 2013 03:52:26 -0700 (PDT) Message-ID: <514EDAF0.6030905@gmail.com> Date: Sun, 24 Mar 2013 21:52:32 +1100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130308 Thunderbird/17.0.4 MIME-Version: 1.0 To: Rasmus Lerdorf CC: Ferenc Kovacs , PHP internals References: <514DFAFF.4010901@lerdorf.com> <514E2C22.4070708@lerdorf.com> In-Reply-To: <514E2C22.4070708@lerdorf.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [PHP-DEV] Continuous Integration Atomic Deploys and PHP 5.5 From: davidkmuir@gmail.com (David Muir) On 24/03/13 09:26, Rasmus Lerdorf wrote: > On 03/23/2013 03:01 PM, Ferenc Kovacs wrote: >> realpath the document root(which is a symlink to the actual release >> directory) from your index.php/bootstrap file and use that as a base >> path for making absolute paths everywhere? >> that way the requests started before the symlink switch will continue >> with the old version but requests started after the switch will use the >> files from the new revision. >> ofc. you can still have issues like an ajax request from the old version >> gets served by the new version, and if you have more than one server >> sooner or later you will/have to sacrifice something from the CAP trio. > Well, solving the multi-request/multi-server ajax scenario is a bit of a > different problem. You'd need to version those requests to handle that. > The scope I am concerned with here is per-server deploy atomicity. > > But yes, some way to have a 2-docroot scenario where all requests > started on one via the docroot symlink stays on that one would be a good > approach but it would take a lot of discipline at the userspace level to > enforce that across a large and diverse codebase with autoloaders and > actual realpath calls all over the place. > > -Rasmus > Are you saying that to allow atomic deploys with O+ you need to make sure that all files are either autoloaded with a full realpath, or manually included/required by the realpath? You mentioned that O+ does not use inodes as cache keys like APC, but what does it use instead? Just the file path? Cheers, David