One slight correction, .NET was made with both desktop and web in mind from the get go. Prior to the .NET framework, there was a bit of mixing but you primarily had ASP versus VB6 versus C++, etc. But yes, PHP was definitely designed for web, however, I do agree that as PHP becomes more OO desktop integration will become easier.
PHP GTK was one of the first ones I played with, and I did find phpdesktop and winbinder when I did a search before posting my statement, so I did do a "bit" of research, and I hope one day some perfects PHP on the desktop, it would be nice to be able to quickly throw a GUI together that is cross compatible with much less effort than working in Mono (although that has improved greatly over the past couple of years too).
I'll have to try pthreads the next time I need parallel processing (in fact, I may convert one of my own projects to use it to speed it up as a good test). I'm not a huge fan of having to use external systems/apps to achieve parallel processing (or languages), simply because you then segment your development force and increase your dependencies all for something that really should (could) be "baked in". Call it a personal bias if you will, but I just don't like having to do that!
Don't get me wrong, I also believe in "pick the language that fits the job" but if you mix and match, it just gets ugly. For example, where I work someone thought it'd be cool to do our rating engine in F# and the rest of the project in C#. F# is very well suited for a rating engine, no argument there, but the problem quickly became only a small handful of devs knew F# well enough to fix and continue to maintain the rating engine. That meant they really couldn't do anything else, and when they had to, they knew nothing about the rest of the system. Same was true for the C# devs, when they had to work in the F# projects, they really didn't understand it well enough to make good changes. In the end, the F# code was eventually replaced with C# to allow the devs to jump in and out of each project with ease.
More often than not, I can't do that with PHP. I always need to utilize another tool, another language, another application, etc to complete a task... It just frustrates me to no end on how often I must do those things. I'm not saying that never happens with .NET, but it happens far less often (to me at least, that may not be true for others in specialized areas).
Don't get me wrong, I love PHP, but I'll also be first to admit, I hate PHP. I don't love or hate .NET, I simply "like it". I just wish I wasn't always feeling like I was pushing PHP's limits/boundaries whereas, with .NET I seem to always feel like there is still another level or two I can take it before those boundaries/limits become apparent.