Post on 23-Aug-2014
description
Deploy !a PHP Application!on Google App Engine
Titolo Testo
PHP for App Engine
https://developers.google.com/events/io/sessions/333055646
The GAE platform
Platform as A Service (PaaS)!
Build, deploy & scale!
Don’t care about infrastructure
https://appengine.google.com/https://developers.google.com/appengine/
Google App Engine: services
All PaaS have limitations!
PHP is in preview phase!
Not all services are available
https://developers.google.com/appengine/features
Google App Engine: data storage
Google Cloud Sql !
Memcache!
Google Cloud Storage
Google App Engine: ext services
Email (internal or SendGrid)!
Twilio!
UrlFetch
Google App Engine: offline work
TaskQueue!
Cron
Google App Engine: auth
User Auth!
Application Identity
Titolo Testo
PHP on GAE
PHP 5.4!
Runs in a sandbox
https://developers.google.com/appengine/docs/php/
PHP on GAE
Some well-know extension are disabled: imagick, intl, pcntl, curl
PHP on GAE
Some well-know extension are disabled: imagick, intl, pcntl, curl
PHP on GAE
whaaat?
Some function are disabled!
permanently: exec, tmpfile!
partially: /e on preg_replace!
softly: gc_*, parse_str
PHP on GAE
File System is Read only: you can store files on Cloud Storage or external services
PHP on GAE
PHP on GAE
Cannot invoke external services directly (no curl remember? :-P)
PHP on GAE
PHP on GAE
Dynamic response max 32 MB!
Timeout on long response
PHP on GAE
Sessions are stored on Memcache !
session_*, $_SESSION work as expected!
use session_set_save_handler to change handler
PHP on GAE
Log are managed via syslog!
use syslog function!
use custom logging lib (eg. Monolog)
PHP on GAE
PHP on GAE
get the sdk!
requirements: python 2.7, php-cgi, mysql?!
local web server
wget https://storage.googleapis.com/appengine-sdks/featured/google_appengine_1.9.4.zip
App Engine SDK
# app.yaml application: propane-forge-391 version: 1 runtime: php api_version: 1 threadsafe: true
Base Config
# app.yaml application: propane-forge-391 version: 2 runtime: php api_version: 1 threadsafe: true
Base Config
# app.yaml — continued handlers: - url: /css static_dir: web/css - url: /js static_dir: web/js - url: .* script: web/index.php
Base Config
# php.ini google_app_engine.enable_functions = “…”
Base Config
!dev_appserver.py --php_executable_path=/usr/bin/php-cgi /
var/www/todo/
Test Locally
Deploy
!appcgf.py update /var/www/todo/!
(or git push)
show me the code!
https://github.com/ideatosrl/silex-todo-gae