Get started with App Engine for PHP: scalable, secure and reliable
By Andrew Jessup, Product Manager
Cross-posted from the Google
Cloud Platform Blog
At
Google I/O, we announced
PHP as the latest
supported runtime for
Google App
Engine in Limited Preview. PHP is one of the world's most popular programming
languages, used by developers to power everything from simple web forms to complex enterprise
applications.
Now PHP developers can take advantage of the scale, reliability and security features of App
Engine. In addition, PHP runs well with other parts of
Google Cloud Platform. Let's look at how this
works.
Connecting to Google Cloud SQL from App Engine for PHP
Many PHP developers start with MySQL when choosing a database to store critical information,
and a wide variety of products and frameworks such as WordPress make extensive use of MySQL’s
rich feature set. Google Cloud SQL provides a reliable, managed database service that is MySQL
5.5 compatible and works well with App Engine.
To set up a Cloud SQL database, sign into
Google Cloud Console - create a new
project, choose Cloud SQL and create a new instance.
After you create the instance, it's automatically associated with your App Engine app.
You will notice Cloud SQL instances don’t need an IP address. Instead they can be accessed via
a compound identifier made up of their project name and instance name, such as
hello-php-gae:my-cloudsql-instance.
From within PHP, you can access Cloud SQL directly using the standard PHP MySQL libraries -
mysql, mysqli or PDO_MySQL. Just specify your Cloud SQL database with its identifier, such
as:
<?php
$db = new PDO(
'mysql:unix_socket=/cloudsql/hello-php-gae:my-cloudsql-instance;dbname=demo_db;charset=utf8',
'demo_user',
'demo_password'
);
foreach($db->query('SELECT * FROM users') as $row) {
echo $row['username'].' '.$row['first_name']; //etc...
}
Methods such as query() work just as you’d expect with any MySQL database. This
example uses the popular PDO library, although other libraries such as mysql and mysqli work
just as well.
Storing files with PHP and Google Cloud Storage
Reading and writing files is a common task in many PHP projects, whether you are reading
stored application state, or generating formatted output (e.g., writing PDF files). The
challenge is to find a storage system that is as scalable and secure as Google App Engine
itself. Fortunately, we have exactly this in Google Cloud Storage (GCS).
The first step in setting up Google Cloud Storage is to create a bucket:
With the PHP runtime, we’ve implemented native support for GCS. In particular, we’ve made it
possible for PHP’s native filesystem functions to read and write to a GCS bucket.
This code writes all prime numbers less than 2000 into a file on GCS:
<?php
$handle = fopen('gs://hello-php-gae-files/prime_numbers.txt','w');
fwrite($handle, "2");
for($i = 3; $i <= 2000; $i = $i + 2) {
$j = 2;
while($i % $j != 0) {
if($j > sqrt($i)) {
fwrite($handle, ", ".$i);
break;
}
$j++;
}
}
fclose($handle);
The same fopen() and fwrite() commands are used just as if you were writing to a
local file. The difference is we’ve specified a Google Cloud Storage URL instead of a local
filepath.
And this code reads the same file back into memory and pulls out the 100th prime number, using
file_get_contents():
<?php
$primes = explode(",",
file_get_contents('gs://hello-php-gae-files/prime_numbers.txt')
);
if(isset($primes[100]))
echo "The 100th prime number is ".$primes[100];
And more features supported in PHP
Many of our most popular App Engine APIs are now supported in PHP, including our
zero-configuration Memcache, Task Queues for asynchronous processing, Users API, Mail API and
more. The standard features you’d expect from App Engine, including SSL support, Page Speed
Service, versioning and traffic splitting are all available as well.
Open today in Limited Preview
Today we’re making App Engine for PHP
available in Limited Preview. Read more about the runtime in our online
documentation, download an early developer SDK, and sign up to deploy applications at
https://cloud.google.com/appengine/php.
Andrew Jessup is a Product Manager at Google, working on languages and runtimes for
Google App Engine.
Posted by Scott Knaster,
Editor