Josh Holmes is a developer evangelist at Microsoft who focuses on PHP and web development. The document discusses features of PHP on Windows/IIS including improved performance from WinCache, easier PHP application deployment and management through tools like WebMatrix and Web Platform Installer, and SQL Server support for PHP applications. It also provides links to resources on optimizing PHP performance, using WinCache, PHP 5.3 changes, and SQL Server support for WordPress.
PHP on IIS has had an amazing performance jump in the past 2-3 years but you can always squeeze a little more torque out of an engine with the right tuning. In this session we’ll dive into improvements in FastCGI and fantastic new libraries such as WinCache 1.1 for exceptional performance in your applications as we go under the hood with IIS.
At OpenCamp 2010, Josh Holmes did a session called Scaling WordPress (and really any PHP application) on Microsoft. This talk dives into supporting PHP and WordPress in specific on Windows/IIS.
Introduction to IIS, the integrated pipeline and application pool. Introduction to IIS features, such as compression, caching, URL rewriting, and application initialization. Troubleshooting IIS with logging and failed request tracing.
PHP on IIS has had an amazing performance jump in the past 2-3 years but you can always squeeze a little more torque out of an engine with the right tuning. In this session we’ll dive into improvements in FastCGI and fantastic new libraries such as WinCache 1.1 for exceptional performance in your applications as we go under the hood with IIS.
At OpenCamp 2010, Josh Holmes did a session called Scaling WordPress (and really any PHP application) on Microsoft. This talk dives into supporting PHP and WordPress in specific on Windows/IIS.
Introduction to IIS, the integrated pipeline and application pool. Introduction to IIS features, such as compression, caching, URL rewriting, and application initialization. Troubleshooting IIS with logging and failed request tracing.
Drupal Day 2011 - Webmatrix loves Drupal!DrupalDay
Talk di Pietro Brambati | Drupal Day Roma 2011
Avete mai installato Drupal in locale? E cosa dite della vostra piattaforma di sviluppo: avete sempre installato tutto quello che serve a Drupal? E dopo che avete installato tutto in locale, che dire degli hoster? Avete mai avuto problemi con il deploy? Bene, in queste sessione vedremo Microsoft WebMatrix, un nuovo tool gratuito da Microsoft che contiene tutto il necessario per l’installazione, la personalizzazione e il deploy del vostro sito.
PHP is a first class citizen on IIS. A lot has been done in order to make sure that PHP can work well and fast on Windows. We will start by installing PHP with PHP Manager and discussing all the options including what thread safe vs non thread safe and VC6 vs VC9 means. Next we'll take a look at how to optimize the FastCGI IIS extension that Microsoft and Zend developed to provide a secure and performant environment for PHP applications. The last part of this webcast will show how to build PHP with Profile Guided Optimizations (PGO), a technique that can provide a significant performance boost in a wide range of applications.
Develop and Run PHP on Windows. Say(Hello); to WordPress on AzureValent Mustamin
Develop and Run PHP on Windows. Say(Hello); to WordPress on Azure, by Risman Adnan (@rismana) & Ronald Rajagukguk (@roraj), from Microsoft, for WORDCAMPID - WordCamp Indonesia 2010. Auditorium Gunadarma University, Depok, January 30, 2010
Using this PPT you will learn following things
how to upload a site using IIS?
how to configure the app pool?
how to access a website using a domain name?
Microsoft’s cloud, called Windows Azure, offers IaaS soloutions, but also, much more interesting, a PaaS solution for hosting of .Net, Java, Python, NodeJS and of course PHP sites. This presentation will go through some of the interesting services of Azure, what you can do with, and how you deploy to Azure. I will talk about cron jobs, auto scale, SSL, continuous deployment and much more.
You may prefer Windows and IIS to build sites, whether it is ASP.NET, ASP or WordPress. Then this slide is for you and content in the slide is from ASPNETHosting2Go.com.
This presentation is for anyone who is willing to know about IIS and its Settings. IIS is an extensible web server created by Microsoft for hosting application.We will review about various aspects of IIS.
Drupal Day 2011 - Webmatrix loves Drupal!DrupalDay
Talk di Pietro Brambati | Drupal Day Roma 2011
Avete mai installato Drupal in locale? E cosa dite della vostra piattaforma di sviluppo: avete sempre installato tutto quello che serve a Drupal? E dopo che avete installato tutto in locale, che dire degli hoster? Avete mai avuto problemi con il deploy? Bene, in queste sessione vedremo Microsoft WebMatrix, un nuovo tool gratuito da Microsoft che contiene tutto il necessario per l’installazione, la personalizzazione e il deploy del vostro sito.
PHP is a first class citizen on IIS. A lot has been done in order to make sure that PHP can work well and fast on Windows. We will start by installing PHP with PHP Manager and discussing all the options including what thread safe vs non thread safe and VC6 vs VC9 means. Next we'll take a look at how to optimize the FastCGI IIS extension that Microsoft and Zend developed to provide a secure and performant environment for PHP applications. The last part of this webcast will show how to build PHP with Profile Guided Optimizations (PGO), a technique that can provide a significant performance boost in a wide range of applications.
Develop and Run PHP on Windows. Say(Hello); to WordPress on AzureValent Mustamin
Develop and Run PHP on Windows. Say(Hello); to WordPress on Azure, by Risman Adnan (@rismana) & Ronald Rajagukguk (@roraj), from Microsoft, for WORDCAMPID - WordCamp Indonesia 2010. Auditorium Gunadarma University, Depok, January 30, 2010
Using this PPT you will learn following things
how to upload a site using IIS?
how to configure the app pool?
how to access a website using a domain name?
Microsoft’s cloud, called Windows Azure, offers IaaS soloutions, but also, much more interesting, a PaaS solution for hosting of .Net, Java, Python, NodeJS and of course PHP sites. This presentation will go through some of the interesting services of Azure, what you can do with, and how you deploy to Azure. I will talk about cron jobs, auto scale, SSL, continuous deployment and much more.
You may prefer Windows and IIS to build sites, whether it is ASP.NET, ASP or WordPress. Then this slide is for you and content in the slide is from ASPNETHosting2Go.com.
This presentation is for anyone who is willing to know about IIS and its Settings. IIS is an extensible web server created by Microsoft for hosting application.We will review about various aspects of IIS.
This is a webinar done with Acquia introdcing how well you can run Drupal on Windows with a demo about WebPI and Drush.
Here's a link to the recorded webinar:
http://tinyurl.com/6rfz3px
Automating Your Enterprise Application Deployments with PowerShellGeoff Varosky
Presented on 2/21/13 at the Granite State SharePoint Users Group
In enterprise application deployments to SharePoint, there are generally farms, or web applications that host specific applications for specific groups, rather than having just an all-in-one deployment. Often times, you do not have access to these other environments, and will need to pass the deployment baton off to the system administrators of those farms.
This session will walk you through how you can deploy your applications, without needing to have the administrator who will be deploying the application, have to do much more than type a few keys into the SharePoint Administration Console and press enter – and having full configuration and deployment of your custom SharePoint applications to other environments.
Make Web, Not War - Installfest: Extend Your Web Server, Rodney BuikeMake Web Not War
Install Windows Server 2008 R2 RC (valid up to one year) and find out what's new in IIS and the Microsoft Web Platform. Then walk through a variety of Demos including ASP.NET & PHP on Server Core, Remote Management of Server Core, Windows PowerShell Web Administration on Server Core & Web Deployment Tool.
Speeding up your WordPress site - WordCamp Hamilton 2015Alan Lok
Given at WordCamp Hamilton 2015, speeding up your WordPress site has great benefits - user satisfaction, SEO boost, better conversion, and saving money. Through internal tune-up and external optimization, you too can make your site faster.
Speeding up your WordPress Site - WordCamp Toronto 2015Alan Lok
This is a revised talk from the May 2015 presentation I gave to WordCamp Hamilton. At the end of this presentation you should have some ideas on how to speed up your WordPress site from within (plugins, code / theme optimizations) to environmental changes.
Mentorship by Josh Holmes - a KalamazooX talkJosh Holmes
I measure my career by the mentors that have guided me through that period of time. When I stop learning new things, that’s when it’s time to move on. Sometimes, it’s technology that I need to learn, sometimes it’s leadership, sometimes it’s hard to quantify. Regardless, I love learning new things and it’s mentors that have taught me over the years.
I’ve also had the pleasure and the honor of serving as a mentor to many others on a very wide range of topics from technology to managing company politics.
In this session, we’ll talk about mentorship, how to find a great mentor and when/how you should step up as a mentor.
Building a high performance front end is a balancing act. You need to understand all the different moving parts and subsystems in the browser and how they interact with each other.
Small changes can significantly impact page and app load time, memory consumption, and processor use which has a huge impact on your user’s experience!
In this session, we will dive into the subsystems of the browser and learn to optimize performance on sites and in web apps.
We will also deep dive into the new performance analyzing tools available expose good and bad run-time patterns for your sites and web apps, and provide users with a fast and fluid experience.
This talk is a celebration of the letter F as regards to software formation. From his first feats in forming friction free software, Josh has been fanatically fighting the furious fight for first class software. This talk is a free flowing fantastic flurry of fulmination about being fearful of failure, focusing on the fixed, forcing feedback and much more… So consider yourself forewarned.
This talk was first delivered in Edinburgh at #WhiskyWeb
A fast moving trend is building for mobile with HTML5. In this talk, Josh Holmes will show what can be accomplished with a mobile browser app and talk about the design considerations for that form factor.
Cloud computing is revolutionising the tech industry but it goes much further than that, as it can have great economic impact across a company and indeed across the country. In the Ireland Cloud Economic Report, produced by the Goodbody Economic Consultants and commissioned by Microsoft, it outlines the potential impact on Ireland’s economy by aggressively but intelligently adopting Cloud Computing across different sectors. At the CloudArena event, we will take a glimpse into the potential future of Ireland and our tech industry.
I delivered this talk at CakeFest 2010 in Chicago. I pulled together the slides from a couple of different that I had done previously to do a quick overview of PHP on the Microsoft web stack and then to hit the technical side of PHP on Azure.
This talk is a talk that I did at MODxpo in Dallas around PHP on Windows. The demos that I did were tailered to MODx but the rest of the content is applicable to a lot of different projects and PHP applications.
Moving Enterprise Applications To The CloudJosh Holmes
With a nod to Brian Prince who created the base for this presentation, this is the talk that Ben Henderson and I did at A Lap Around PDC in Nashville, TN in 1/2010.
Best And Worst Practices Building Ria with Adobe and MicrosoftJosh Holmes
Come listen to leading Rich Internet Applications (RIA) experts from Microsoft and Adobe discuss many of the best and worst practices when building RIAs. RIAs provide a similar user experience to traditional desktop applications combined with the ease of deployment of web/browser based applications. This produces a fair amount of confusion because there are a number of potentially conflicting practices depending on whether you approach your RIA as a desktop or a web application. This session dives into the definition of RIA and walks through the best and worst practices that have appeared over and over again. We will explore architectural patterns and practices such as state management, fault tolerance, service composition, communications protocols and message formats and goes into details on how RIAs can be developed using runtime environments such as Adobe AIR or Microsoft Silverlight.
For more read our blogs at
http://www.jamesward.com
http://www.joshholmes.com
Simplicity is a lost art in the application development space. The Wikipedia definition of Simplicity is “Simplicity is the property, condition, or quality of being simple or un-combined. It often denotes beauty, purity or clarity. Simple things are usually easier to explain and understand than complicated ones. Simplicity can mean freedom from hardship, effort or confusion.” This is a beautiful statement that we often lose sight of when we are building our applications. Instead we are on a never ending quest to fill out a checklist of features or to build something clever forgetting about the actual needs of our users to get a specific task done. This session takes complexity to task and challenges you to bring simplicity to the center of your development with some straightforward ideas and guidance.
Full writeup of the presentation and patter at http://sn.im/lostartofsimplicity
This is the deck that I used in my European Silverlight Tour in Spain, Switzerland, Denmark, Sweden, Bengium, Netherlands and Ireland. It\'s about architecting Rich Internet Applications with Silverlight 2.0.
Scott Hanselman wrote a great post on how to keep your blog from sucking. I saw it, liked it and blogged about it myself. At some point I created, with Scott's permission, this presentation based on those posts.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
17. Default minimum Authentication
installation
Authorization
New modular
architecture Resolve Cache
Streamlined processing
pipeline Execute Handler
Config similar to
Update Cache
.htaccess, web.config
faster Send Response
18. Required for many Web CMS’s
Rules-based, text file or database
Reg-Ex & wildcard matching
Rewrite:
Outbound URL’s
Request headers and Server variables
HTTP Response
Inside specific html tags in response
Import Apache mod_rewrite
19. Production PHP on Windows/IIS !!!!
Handles requests from app pool
No more createproc() per request
Automatic Performance tuning
Mem, CPU, CTX
Better density for hosted environments
Auto recycling PHP pool when php.ini changes
No more manual IIS restarts
Consistent features across all versions of IIS
Code in XP, deploy to WinSvrR2
20. Boost your speed with no code
changes
Opcode Cache
File Cache
Relative File Path Cache
Session Cache
User Data Cache
WinCache Statistics Script for
performance details
21. Updated code base
Native Win32 instead of
POSIX
Latest compiler VC9
Use Non-Thread-Safe
builds for better
performance.
22. Register multiple PHP versions
with IIS
Easy checking of phpinfo()
Configure PHP error reporting
Manage all php.ini directives and
PHP extensions within IIS
Remote PHP administration via IIS
Remote Administration Tool
http://phpmanager.codeplex.com/
23. PHP Driver for SQL Server 2.0
Support for native PHP
Support for PDO
Support for PHP 5.3
Source released under Apache 2.0
Signed version includes support
Drupal 7 will be first major PHP app with SQL Server
support
24. Consolidate MySQL or SQL Server
Management inside IIS where you
manage your sites
Manage local/remote
databases
Create and edit tables
Add and edit data
Modify indexes and keys
Create and execute queries
25. Web Application Gallery
The most popular PHP apps
Easiest way to install
Packages built and tested
for Windows/IIS
Promoting actively:
▪http://web.ms/wordpress
▪http://web.ms/drupal
▪http://web.ms/joomla
26. Extend PHP
Applications:
Build reports with SQL
Server Reporting Services
and the SDK for PHP
Jazz up PHP app with
Silverlight adaptive
streaming
Add Bing Search to your
site, like the WordPress
plug-in
http://www.interoperabilitybridges.com/php
27. WinCache is on PECL
SQL Server Driver for PHP is on codeplex
IIS and WinCache documentation on php.net
Participating on PHP forums
Working with PHP Group to improve PHP and PHP
installer
Working with PHP application developers to
integrate URLRewrite and WinCache
Working with PHP application communities to
enable easier deployment on Windows/IIS (Web
Deploy)
32. WebMatrix
http://web.ms
Web Platform Installer
http://www.microsft.com/web/gallery
How WinCache makes PHP run faster
http://blogs.iis.net/ksingla/archive/2009/09/19/how-
wincache-make-php-run-faster.aspx
Using WinCache Extensions for PHP
http://learn.iis.net/page.aspx/678/using-windows-cache-
extension-for-php/
PHP 5.3 Changes to Support Windows
http://docs.php.net/manual/en/migration53.windows.php
33. SQL Server PHP Blog
http://blogs.msdn.com/sqlphp
SQL Support for WordPress
http://wordpress.visitmix.com/development/migr
ating-a-wordpress-site-from-mysql-to-sql-
serversql-azure
Microsoft’s Wordpress Sites
http://wordpress.visitmix.com
http://microsoft.com/web/wordpress
Josh Holmes’ Blog
http://www.joshholmes.com
http://www.flickr.com/photos/joshholmes/4420045760/sizes/l/in/set-72157623387691473/I am Josh Holmes!
http://www.flickr.com/photos/baggis/3437478294/Microsoft is a software company that builds a lot of great platforms and applications. We have a large number of finished applications such as Microsoft Word and so on that a ton of people use out of the box every day to accomplish their job. But one of the exciting parts about Microsoft is that almost everything starting with Windows, SQL Server and so on all the way up to Microsoft Office is also a platform that other people (read you in the audience) can write applications on top of in addition to just using out of the box. The conglomeration of platforms from Microsoft that I’m talking about today is Windows, IIS, SQL Server and Azure and running PHP/WordPress on top of those platforms.
http://www.flickr.com/photos/kr_alliance/4545102960/sizes/l/Before we get to that, however, we need to take a quick peek back in history. Many of you probably tried PHP on Windows at some point in the history so you’re thinking that I’m crazy to attempt PHP on Windows.
http://www.flickr.com/photos/fatboyke/2668411239/ 5 years ago, PHP did not run on Windows all that well. It was slow. PHP wasn’t optimized for Windows/IIS and Windows/IIS wasn’t optimized for PHP. Painfully slow at points.
http://www.flickr.com/photos/kaptainkobold/3203311346/It wasn’t compatible with the over versions of PHP. If you were on Windows vs. Linux, you had to take that into account when you were writing your applications and there were standard switch blocks that you’d have to code in order to accommodate the different platforms. Most people didn’t bother doing that so there was platform lock in which defeats much of the purpose of running PHP.
http://www.flickr.com/photos/alf_bilder/4501404108/There wasn’t a good implementation of mod_rewrite or a good alternative. This cause all kinds of problems with SEO optimization and much more.
http://www.flickr.com/photos/sam_scholefield/49378638/There were many other problems and it just made the PHP developers (understandably) mad at Windows and Microsoft.
http://www.flickr.com/photos/atelier_tee/2478897483/sizes/l/So where are we now?
http://www.flickr.com/photos/aturkus/193533029/sizes/l/Microsoft has invested a tremendous amount of time and resources into making sure that we fix all of those issues.
http://www.flickr.com/photos/spoungeworthy/423796116/sizes/o/PHP on Windows is fast. FastCGI support for IIS 7.0, 6.0, 5.11 rocks and is fast. It’s the default on IIS7 and it’s a fast and reliable way to run PHP on Windows. There are all kinds of benchmarks out there but I’d like for you to test it yourself. There are many areas where PHP on Windows/IIS is just as fast or faster than PHP on Linux/Apache. There are other areas where performance suffers some. You should test your application on both platforms and compare performance. For some applications you’ll be pleased, for others you won’t be. Either way you’ll learn something about your application.
http://www.flickr.com/photos/joshholmes/4420154653/sizes/l/in/set-72157623387691473/PHP on Windows/IIS is compatible because it’s the same PHP. This means that most of the applications should just run on IIS. Where there are incompatibilities, it’s because there are some extensions and such to PHP that don’t run on IIS because they are deeply embedded in the Apache piping system or they leverage something in Linux and so on. In some cases there are compatible alternatives. In other cases, we’ll have to work around those. If you run into one of these cases – PLEASE reach out to me and let me know what you’re trying to accomplish. I can tell you that there’s not a one for one equivalent to everything in the world on Linux
A great example of where we don’t have the exact same thing but a great alternative is mod_rewrite on Linux and URL Rewrite on IIS. I’ll walk through a demo of this in just a little bit but in short, URL Rewrite is a fantastic and powerful engine that allows you to do some outstanding things.
http://www.flickr.com/photos/neufneufneuf/4583449949/More pigs fly – we didn’t stop there. In June 2009, we contributed 20k lines of source code to the Linux kernel to do much better virtualization support for things such as Suspend, Hibernate and Resume. Obviously our motivation was to get it to work better with Hyper-V but that code also helps with VMWare, Parallels and more.
http://www.flickr.com/photos/hendricksphotos/3240667660/sizes/o/Now, all of that is fantastic but let’s get to some demos. Demos are the meat of this talk.
http://www.flickr.com/photos/hendricksphotos/3240667626/‘Cause I think that you want to see what’s in my smokin toolbox here and seeing is believing. Web Platform InstallerThe first thing I need to do is get WordPress up and running on my Windows installation. The easiest way to do that is with the Web Platform Installer. This is a free tool that Microsoft has put out there to make your life easier on IIS. You can, under the Web Platform Tab, configure your server to install modules such as URL Rewrite, Advanced Logging features, ODBC or any number of things that are optional on IIS but you might need to leverage. But the tab that we’re most interested in is the Web Application tab where you can find WordPress. Under this tab you’ll find a bunch of different applications ranging from Aquia Drupal to DotNetNuke to Moodle to ScrewTurn Wiki to WordPress. All of these applications and all of this data actually comes from the Web Application Gallery. If you select WordPress and click Install, you’ll get the installation wizard which will analyze the requirements for the applications and make sure that you have everything and download it if you don’t. An important thing to notice here is that the WordPress install is actually coming from http://wordpress.org/wordpress-2.9.2-IIS.zip. If you’ll notice, that’s actually coming from the WordPress foundation rather than from Microsoft. We’re not distributing Wordpress or any of these projects. Instead, we are providing a channel and portal for those applications with a lot of support to make sure things are tested and ready to go. The next couple of screens that we see are configuring your specific installation. The first screen is a common screen that all of the projects get that has to do with were you’re going to put the physical files and the virtual directories stuff that IIS cares about. If you are running multiple web sites off of one machine, here’s where you make that assignment. For example, I’m running http://www.joshholmes.com and http://www.wonderpuzzle.com off of the same server The second page is actually configured by the project itself and has to do with the project’s configuration files directly. WordPress, for example, needs to know the MySQL Administrator’s password so that it can log into MySQL and create the database. It also needs to create a user for that database it set it’s password and the like. This is all part of the package that was downloaded from Wordpress.org. Investigating the WebPI PackageThat package is just a ZIP file with the PHP files, SQL Scripts and a couple of XML files in it. If you open the ZIP file and look at the parameters.xml file, you’ll see how this is all built up. For example, there’s a custom parameter called DbName with a default value of "wordpress" that’s got a regular expression validation of "^\\w{1,16}$" or in English, 1 to 16 characters in length with no whitespace or punctuation. This parameter file is inserted into the install.sql file wherever the Web Platform Installer finds the word "PlaceholderForDbName" and in the wp-config.php file where if finds "putyourdbnamehere". This makes it easy to set up any parameters that you want and insert them into any file that you want. And if you want, you can create your own projects and custom feeds for the Web Platform Installer to leverage. I’ll have to write an article about doing that in the near future. The next thing that happens is that the install is done and you’re ready to start setting up your WordPress install. You should be, if you’ve ever set up WordPress on any platform, be familiar. You have to make sure that you copy that fantastic auto-generated password, log in and immediately change your password so that you don’t forget it. An important thing to point out here is that even though it’s an older version of WordPress that’s installed, it’s still WordPress and WordPress can update itself and you should do that if you are going to run this for more than a quick demo. Pretty URLS and URL RedirectThe next thing that I want to do is set up my navigation and URL redirection. Just like any other WordPress install, you can do that under Settings | Permalinks. Select your favorite configuration and once you save your updates, there’s a prompt that tells you "You should update your web.config now". If you’ve done this on Linux, you’ll get a prompt that says "You should update your ht.access now". This is because URL Rewrite leverages the web.config. You can actually, if you’ve got an ht.access file that you use all the time, import that directly through the Internet Information Services Manager. The web.config is an XML file that has a tremendous amount of power. In this file you’re able to create file handler mappings, security settings on a per directory level, FastCGI settings, default documents for the application, IIS modules and a ton more. The web.config that WordPress requires at a minimum for pretty URLs is as follows:<rule name="wordpress" patternSyntax="Wildcard"> <match url="*" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="index.php" /> </rule> Save this as a file called web.config in the root directory of your web application and you’re good to go with pretty URLs. Quick Peek At WinCacheThe next thing that I want to look at is WinCache. WinCache is a library written by Microsoft and distributed through the Pear Foundation. It’s a op code caching and object caching library that is on by default in the PHP install from the Web Platform Installer. To demo this I turned off WinCache in the php.ini file and used a little client app called WyCats that spins up 25 threads and starts hammering the server. It measures the number of requests, responses, errors and the like. Then I turn WinCache back on and restart WyCats. Immediately there’s a 3-4x improvement in performance. We could go a lot deeper with WinCache but that’s a topic for a different blog post. Windows Azure Data StorageThis helps you scale vertically on a single box but to get true scale, we’re going to need to start leveraging horizontal scaling. One of the easy things to do is leverage a WordPress Plugin called XXXXXXXXXXXX which will offload the use generated media such as pictures, media files and anything else heavy to the Azure Data Storage which can be put out on the new Azure Content Delivery Network. That’s got a global footprint and helps you put your content near to your reader.More WordPress Plugins that RockThere are a lot of other WordPress plugins that leverage various parts of the Microsoft ecosystem including the Bing 404 plugin, the Bing Maps plugin, the Silverlight Streaming Media plugin and more. I’m pretty excited about all of these plugins. The Bing 404 plugin handles broken links and will do a Bing search of your site suggesting possible updated links. This one was written by Cal Evans of Blue Parabola. There are actually three different Bing Maps plugins. The Silverlight Bing Maps plugin is awesome, even if all of the comments are written in French. It helps you drop a Bing Map anywhere on your site with the use of shortcodes. The Silverlight Streaming Media leverages the Smooth Streaming support in IIS to intelligently stream the media at the appropriate fidelity for your consumer based on their bandwidth, machine specs and the like. All of these plugins are obviously released under GPL since they are hosted on the Wordpress.org site and easily found through the add new plugin search. Windows Live WriterOne of the things that I didn’t plan on hitting on but decided to after I saw that there was a fair number of bloggers in the room that weren’t as technical is Windows Live Writer. It’s a free tool that allows you to do your blogging and posts in a desktop application so you can do it offline and have all of the richness of a desktop application. It’s got preview states where it will actually show your blog post as you’re writing it as it will look on the page complete with margins, your CSS and the whole nine yards. There are hundreds of fantastic plugins to do everything from inserting maps to formatting HTML code to managing flickr images. It’s the tool that I use to do all of my blogging. This post, as an example, I wrote in three different airports, on two different planes and I’m in my hotel room at the moment finishing it up. Between WordPress, Windows Live Writer and Jing, I’m a happy blogger.
IISIIS 7.0 is a from the ground up rewrite over the previous versions and with a new architecture. Default Min Install:The new IIS 7.0 architecture and default minimum install enables a significant reduction in attack surface making it far more secure.Modular Architecture: Previous versions of IIS were difficult to customize or streamline for high performance applications.This new modular architecture makes it far easier to create modules and handlers at any point in the processing pipeline.You also don’t have to write these modules in C++ anymore either. You can create them in managed code far faster and with excellent performance.Streamlined Processing Pipeline: The modular architecture allows for a streamlined processing pipeline. Load only what modules you need for much better performance.Web Config: The new configuration system in IIS 7.0 loads configuration files—similar to .htaccess files in Apache—and manages them in a cache after first read. All subsequent requests use the cached configuration and the new configuration cache consumes significantly less memory than the equivalent in Apache. IIS 7.0 also includes caching support for all types of dynamic content.
Fast CGIWith the release of FastCGI first time you could actually consider hosting php on win/iis, production quality, no more crashes.Previously you had two options to host PHP, CGI or PHP ISAPI.CGI was stable but very slow because you had to spin up a new process for each new PHP request.ISAPI was faster but since many popular extensions for PHP were not thread safe this caused major issues with stability.FastCGI handles PHP requests out of an app pool rather than spinning up a new one each time.FastCGI provides optimal PHP performance without having to manually tune:Fast CGI provides Automatic performance tuning.Determines: CPU usage, memory consumption, context switches. Based upon that information it changes the number of PHP processes to optimize your application automatically. (SetsDynamic Max Instances)Very important if you are a hoster managing many customers since it allows for a higher density of PHP applications on Windows than you could get before or a customer with an app that has large changes in requests over time.Automatic recycling of PHP processes in IIS when php.ini changes. No longer need to restart IIS.Version 1.5 now has a consistent set of features across all versions of IIS. This is important as a significant number of PHP developers still use XP. This will allow them to develop and deploy seamlessly to Windows Server. Version 1.5 of Fast-CGI is included in Windows Server 2008 R2 (IIS 7.5), an update is available for IIS 7 along with a back-port for those using XP.Another useful feature I wanted to point out here as well is you can provide to your customers developing or running PHP on Windows/IIS is the Advanced Logging module in IIS which you can use to consolidate event reporting for PHP itself as well as from IIS. This will help your customers consolidate application performance reporting, good for tracking failed requests or other issues in your php application. No need to have separate error log files for webserver and php.
Compile and file operations on Windows are slower than on linux. Many more security checks, etc.Many PHP developers on Linux use other caching mechanisms such as memcache or APC.There are no good open source solutions for caching on Windows WinCache is our solution to help provide even more performance for PHP on Windows.Opcode cache – this is a cache of the compiled PHP file. WinCache let PHP core compile the PHP file to generate opcodes first time it is executed. Then caches these opcodes in memory and is shared with other PHP processesIncreasing performance, especially on subsequent access to the executable code. Can expect a 100%-200% increase in performance.File cache – File IO operations on Windows are much more expensive than on Linux. For files on UNC’s or NFS in hosting environments scenarios it is even worse. File Cache stores the contents of opened files in shared memory. This increases performance 80-90% over accessing the files each time from a shared location.Resolve File Path cache – On first access a PHP application will work to determine the absolute path to a file to then open itThis feature is used to store the absolute path from relative file paths used in PHP applications.Again, anything to reduce usage of the file systems calls produces performance gains.Session Cache:The session cache will take and store session data in shared memory cache instead of file system for added performance benefits.Currently this feature cannot be used in a webfarm where there is no session affinity.User Data Cache API’s: Provides caching functions(API’s) with the Can be used by PHP applications for storing variables and objects in shared memory using WinCache instead of PHPs cache.You can cache database data, php data, classes, etc. Overall just closing the feature gap to APC, etc. trying to have a complete solution.WinCache Statistics Script – This thing is very cool and you should check it out. Great for helping you benchmark and fine tune your PHP applications on Windows. Is installed with the WinCache for PHP.PS: this file is protected by default with HTTP basic authentication so if you do provide this for your customers. Just an FYI.
So prior to PHP 5.3 the PHP engine itself wasn’t mature on Windows, causing compatibility and performance problems.Implemented with APR (Apache portable runtime) instead of directly on Win32 created subpar performanceAlso many Windows-specific PHP bugs hadn’t been fixedThere were as I mentioned earlier issues with hosting on IIS itself with the slow CGI or unstable ISAPI handler. Using FastCGI provided the fix for that part.The next piece was…PHP 5.3Has an updated code baseMuch of PHP for Windows completely rewritten to use native Win32 instead of through the POSIX layerAlso compiled using our latest compiler VC9 versus VC 6 which was 10 years oldUse the NTS version. No thread safety checks since PHP runs Single threaded on IIS in FastCGI.Reason for NTS is that many of the most popular community extensions themselves are NTS themselves, making NTS the default on Windows is the safest route for stability.Btw, Anybody know who this guy Rasmus guy is?PS: The Web App Gallery is still using 5.2.x (app requirement) but we are getting close to having multiple versions of PHP available for
PHP Manager for IIS 7 is a open source extension for IIS Management Console, that greatly simplifies the tasks of setting up, configuring and managing one or more PHP versions on IIS server. Use it to register PHP with IIS, run multiple PHP versions, get the information about PHP runtime settings, add and modify php.ini directives and enable or disable PHP extensions.Features:Simple registration of many PHP versions with IISAn easy way of checking if PHP works correctly by geting the output of phpinfo() functionConfiguring the PHP error reproting settings for production or development environmentManaging all php.ini directives and PHP extensions from within IIS managerRemote PHP administration via IIS Remote Administration ToolWorks well with PHP installed via Web Platform Installer or PHP Windows Installerhttp://phpmanager.codeplex.com/releases/view/53121
Don’t know if you know this but OddlySpecific.com, which is running in Azure itself and leveraging the SQL Server support and the Azure Data Storage options with SQL Server. We’re working making that more broadly available so that sometime soon you could run in Azure as well. The awesome part about that is that it will allow you to scale up very quickly to meet market demands without having to think about infrastructure.