RE: [PHP-DEV] Windows build
| From: | Frank M. Kromann | Date: | Sun, 07 Jan 2007 05:39:38 +0000 |
| Subject: | RE: [PHP-DEV] Windows build | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-27321@lists.php.net to get a copy of this message | ||
VC 6/7/8 can be installed on the same box (VC 6 does not install on Windows
Vista though).
My XP box has all three and I can build PHP with any of them by setting
the correct environment variables before calling the build scripts.
- Frank
> Btw, one more thing which we could consider doing (although it means
more
> work) is to do the nts build with VC 8 and the thread-safe build with VC
6.
> It'd probably require another machine (either physical or virtual).
>
> > -----Original Message-----
> > From: Andi Gutmans [mailto:andi@zend.com]
> > Sent: Saturday, January 06, 2007 6:20 PM
> > To: 'Edin Kadribasic'
> > Cc: 'PHP Internals List'
> > Subject: RE: [PHP-DEV] Windows build
> >
> > Hi Edin,
> >
> > The 2% surprises me a lot. We got very different results but
> > it might be due to different hardware, OS (we use Windows
> > Server 2003) and different tests. Here's what we got (all
> > non-threadsafe):
> >
> > vc2005 intel msvc6
> > bench 9.326 9.378 10.28
> > hello 10.48 11.6 11.28
> > xoops 67.82 69.49 81.34
> > static 16.97 18.4 21.18
> > qdig 63.52 67.05 69.57
> > qdig2 14.4 15.61 19.04
> >
> > Btw, today I never recommend running mod_php on Windows and
> > always point people to CGI or existing FastCGI implementations.
> > That said, I understand that you don't want to break things
> > right now and stick to VC 6. Although I know it can work in
> > some cases, I agree with you that running two CRTs is
> > probably not a great idea. While the interfaces of the CRT
> > functions might be identical, I am not sure all the
> > structures are the same and that could cause some ugliness if
> > we get structs like file handlers from the Apache executable
> > passed into PHP and vice-versa.
> >
> > It's something worth looking into but not something one would
> > want to rush for a minor version like 5.2.1.
> >
> > Andi
> >
> > > -----Original Message-----
> > > From: Edin Kadribasic [mailto:edin@krug.dk]
> > > Sent: Saturday, January 06, 2007 1:28 PM
> > > To: Andi Gutmans
> > > Cc: 'PHP Internals List'
> > > Subject: Re: [PHP-DEV] Windows build
> > >
> > > Hi Andi,
> > >
> > > Turns out the problem is that Apache is building their
> > binaries using
> > > VC6 so wrong CRT gets loaded. The only solution I found was to tell
> > > Windows to load Apache with msvcr80.dll instead of msvcr.dll by
> > > suppling a manifest file in Apache bin directory. If you crate
> > > Apache.exe.manifest that contains:
> > >
> > > <?xml version='1.0' encoding='UTF-8'
> > > standalone='yes'?> <assembly
> > > xmlns='urn:schemas-microsoft-com:asm.v1'
> > > manifestVersion='1.0'>
> > > <dependency>
> > > <dependentAssembly>
> > > <assemblyIdentity type='win32' name='Microsoft.VC80.CRT'
> > > version='8.0.50608.0' processorArchitecture='x86'
> > > publicKeyToken='1fc8b3b9a1e18e3b' />
> > > </dependentAssembly>
> > > </dependency>
> > > </assembly>
> > >
> > > The Apache will load PHP and PHP will be able to load
> > extensions. It
> > > probably isn't good idea to force a different C Runtime on
> > Apache like
> > > this.
> > >
> > > Regarding performance, I found that on Zend/bench.php the
> > improvement
> > > was only marginal (2%) compared to huge increase
> > > (25-30%) when disabling thread support.
> > >
> > > http://edin.dk/archives/25-Benchmarks.html
> > >
> > >
> > > Edin
> > >
> > >
> > >
> > > Andi Gutmans wrote:
> > > > Hi Edin,
> > > >
> > > > Thanks for trying to get this to work!
> > > >
> > > > I think eventually it'll be the right move to go to VC8
> > but I agree
> > > > that if it risks a successful 5.2.1 release then it might
> > > not be worth
> > > > doing that right now. If you can share with us a
> > > reproducing case we
> > > > can try and look into it and see if we can get it to work.
> > > So far we
> > > > have concentrated on CLI/CGI/FastCGi because that's the
> > > most feasible
> > > > way of running, but I agree that you also need to get the
> > > other methods to run.
> > > >
> > > > For those who are curious, there are some significant performance
> > > > improvements in VC8. Our tolower() optimization which is
> > > significant
> > > > is only for VC8, the compiler creates significantly
> > faster code (on
> > > > par with Intel C/C++ compiler), and I believe some of the CRT
> > > > functions like time() are also much faster. So I