Request_URI For IIS Updated with ISAPI_Rewrite 3 Support

Request_URI for IIS, NeoSmart Technologies’ compatibility toolkit for IIS on Windows, has been updated to version 1.1, with support for Helicon’s ISAPI_Rewrite 3.x

With this update the installation process has been simplified somewhat, in particular the need modify HTTPD.INI to set the server variables has been eliminated – you just need to install ISAPI_Rewrite 3, configure php.ini to load up request_uri.inc, and you’re set.

Request_URI for Windows 1.1 retains backwards compatibility with ISAPI_Rewrite 2.x for those of you who’d rather not switch to the new (and much-improved) version 3.x.

Continue reading

eAccelerator PHP Extension Isn’t Thread-Safe…

For all the Windows-bound PHP users out there, consider yourselves warned: even if you’re running the (supposedly) thread-safe PHP Win32 binary redistribution, you’re still susceptible to PHP Access Violation Errors, race problems, heap corruption, and much worse if you use the popular eAccelerator opcode-caching extension.

We did our testing with the binaries compiled by SiteBuddy using the latest versions of both PHP and eAccelerator. Almost immediately after initiating a stress test on our test servers we experienced the dreaded “PHP Access Violation” error – which brings down the entire IIS Worker Process to its heels.

Continue reading

20 Hours of Downtime

PHP really sucks. Unbelievably so. On LAMP, it’s awesome. But if you’re on a new, shiny WIMP server, PHP is the pits. PHP stability on IIS is about 1 over a million that on a LAMP server. So we’re sorry. We’re sorry we had a 20 hour outage and couldn’t do anything about because we had no idea it happened. We’re sorry we ever thought we could trust PHP on Windows/IIS for even a minute under virtually no-load without keeping our eyes on it. We’re especially sorry that NeoSmart Technologies, the blog, the forums, the downloads, the whitepapers, and all the resources were unavailable for that long.

Ever since moving to Windows, we’ve had unbelievably great results on MySQL, JSP, and ASP. But with PHP, it’s been nightmare after nightmare to no end. PHP corporation (or whatever it is) is aware of this, though they’re not confessing to any particular bugs nor are they expressing any interest in solving this. We moved to PHP 5.2 in hopes of addressing the stability – according to PHP, that was fixed. What they neglected to mention was a bunch of other bugs that still haunt PHP’s quest for stability on a Windows Server. IIS auto-restarted per our configuration, but the entire server needed a reset to get PHP working again. Ugh!

Anyway, we’re back up now, and we’re looking at some of the alternate PHP engines out there. Nothing is like PHP of course, because “there isn’t a need” for a PHP-compatible PHP replacement (then again, just by the sound of it..) but several Windows-specific “PHP compilers” exist that would take care of the issue. Then again, we could always jump down to PHP 4 – but that’s just scary. At any rate, rest assured, we’re scouring the web and working nonstop looking for a solution to this nonsense.

How To: apache_response_headers() on IIS

Along with the release of our request_uri for IIS yesterday, we have another useful tip for a second function commonly found in WordPress plugins and other PHP redistributable scripts. apache_response_headers is used to get a list of all the headers sent out by a page, in the format of an associative array.

IIS doesn’t use this function, and before PHP5, there was no way to properly emulate its behavior. But on PHP5, it’s nothing too difficult. Without further ado, here’s the code:

Continue reading