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
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 buildHi 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.04Btw, 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 buildHi 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 liketime()
are also much faster. So I
Hello Frank,
same here, i even have both 7.0 and 7.1 installed. Small hint about that,
one can set the registry to have the 6 project/solution files be opened with
6 and the others by the original tool (install 6 last or 6 first and then
edit registry).
best regards
marcus
Sunday, January 7, 2007, 6:39:38 AM, you wrote:
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
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 buildHi 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.04Btw, 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 buildHi 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 liketime()
are also much faster. So I
Best regards,
Marcus