96
Open a Window, see the clouds Rafael Dohms photo credit: Denis Grzetic Azure e PHP Friday, September 30, 2011

Open a Window, see the clouds - TechEd 2011

Embed Size (px)

DESCRIPTION

Palestra realizada no TechEd 2011 em São Paulo.

Citation preview

Page 1: Open a Window, see the clouds - TechEd 2011

Open a Window, see the clouds

Rafael Dohmsphoto credit: Denis Grzetic

Azure e PHP

Friday, September 30, 2011

Page 2: Open a Window, see the clouds - TechEd 2011

Rafael Dohms

Evangelista PHP, membro ativo da Comunidade PHP e certificado ZCE. Ele ajudou na fundação de dois Grupos de Usuários de PHP ao longo do tempo e hoje compartilha a coordenação do PHPSP. Desenvolvedor, gamer e apaixonado por código ele também é host do primeiro podcast de PHP do Brasil: PHPSPCast.

Atualmente ele trabalha na equipe SWAT do grupo MIH, uma equipe de experts que fornecem conhecimento técnico para o grupo além de trabalhar com P&D buscando novos nichos da internet e tecnologia. Seu papel como Desenvolvedor Sênior é codar, treinar e auxiliar outras empresas e se divertir enquanto faz isso.

phot

o cr

edit:

Rob

Alle

n

Friday, September 30, 2011

Page 3: Open a Window, see the clouds - TechEd 2011

OLHANDO PELA JANELA

•O que é a nuvem?

• Por que escolher a nuvem?

• Vamos conhecer o Windows Azure com PHP

• Como isso vai afetar meu código?

Friday, September 30, 2011

Page 4: Open a Window, see the clouds - TechEd 2011

O QUE É A NUVEM?não é só mais uma palavra no buzzword bingo

Friday, September 30, 2011

Page 5: Open a Window, see the clouds - TechEd 2011

HOSPEDAGEM COMUM

• Conta compartilhada, VPS ou máquina local

• Uma máquina, em um local

• Pagamento mensal

Friday, September 30, 2011

Page 6: Open a Window, see the clouds - TechEd 2011

HOSPEDAGEM COMUM

• Conta compartilhada, VPS ou máquina local

• Uma máquina, em um local

• Pagamento mensal

Própria

Friday, September 30, 2011

Page 7: Open a Window, see the clouds - TechEd 2011

COMPUTAÇÃO NA NUVEM

• Menos “apego físico” (virtualização)

• Uma ou mais máquinas ou “instancias”

• Geograficamente espalhada

• Pagamento por hora/recurso

• “abstração” de recursos

• 3 Sabores: IaaS, PaaS, SaaS

Friday, September 30, 2011

Page 8: Open a Window, see the clouds - TechEd 2011

Hardware/Rede

Sistema Operacional

Software

Aplicação

Dados

Friday, September 30, 2011

Page 9: Open a Window, see the clouds - TechEd 2011

Hardware/Rede

Sistema Operacional

Software

Aplicação

Dados

UpgradesConfiguração

ApacheMySQL

Resfriamento Cabeamento

DesenvolvimentoPublicação

Armazenamento Compartilhar

Friday, September 30, 2011

Page 10: Open a Window, see the clouds - TechEd 2011

IaaS“Infrastructure as a Service”

Hardware/Rede

Sistema Operacional

Software

Aplicação

Dados

“Infraestrutura como Serviço”

Friday, September 30, 2011

Page 11: Open a Window, see the clouds - TechEd 2011

IaaS“Infrastructure as a Service”

Hardware/Rede

Sistema Operacional

Software

Aplicação

Dados

você

eles

“Infraestrutura como Serviço”

Friday, September 30, 2011

Page 12: Open a Window, see the clouds - TechEd 2011

PaaS“Platform as a Service”

Hardware/Rede

Sistema Operacional

Software

Aplicação

Dados

você

eles

“Plataforma como Serviço”

Friday, September 30, 2011

Page 13: Open a Window, see the clouds - TechEd 2011

SaaS“Software as a Service”

Hardware/Rede

Sistema Operacional

Software

Aplicação

Dadosvocê

eles

“Software como Serviço”

Friday, September 30, 2011

Page 14: Open a Window, see the clouds - TechEd 2011

IaaS Paas SaaS

custos

gerenciamento do servidor

gerenciamento do software

publicação da aplicação

Friday, September 30, 2011

Page 15: Open a Window, see the clouds - TechEd 2011

POR QUE ESCOLHER A NUVEM?Quais são as vantagens de escolher a nuvem?

X

Friday, September 30, 2011

Page 16: Open a Window, see the clouds - TechEd 2011

tempo

trafego

O MODELO CONTA DE LUZ

Friday, September 30, 2011

Page 17: Open a Window, see the clouds - TechEd 2011

tempo

trafego

O MODELO CONTA DE LUZ

Friday, September 30, 2011

Page 18: Open a Window, see the clouds - TechEd 2011

tempo

trafego

pico

O MODELO CONTA DE LUZ

Friday, September 30, 2011

Page 19: Open a Window, see the clouds - TechEd 2011

tempo

trafego

pico

O MODELO CONTA DE LUZ

Friday, September 30, 2011

Page 20: Open a Window, see the clouds - TechEd 2011

tempo

trafego

pico

O MODELO CONTA DE LUZ

Friday, September 30, 2011

Page 21: Open a Window, see the clouds - TechEd 2011

DISPONIBILIDADE

Friday, September 30, 2011

Page 22: Open a Window, see the clouds - TechEd 2011

DISPONIBILIDADE

Friday, September 30, 2011

Page 23: Open a Window, see the clouds - TechEd 2011

DISPONIBILIDADE

Friday, September 30, 2011

Page 24: Open a Window, see the clouds - TechEd 2011

ESCALABILIDADEComputação sem estado + Armazenamento durável

Friday, September 30, 2011

Page 25: Open a Window, see the clouds - TechEd 2011

ESCALABILIDADEComputação sem estado + Armazenamento durável

Friday, September 30, 2011

Page 26: Open a Window, see the clouds - TechEd 2011

OLHANDO POR DENTRO

Friday, September 30, 2011

Page 27: Open a Window, see the clouds - TechEd 2011

Fabric

StorageCompute

Windows Azure

Friday, September 30, 2011

Page 28: Open a Window, see the clouds - TechEd 2011

AppFabric

Fabric

developer

Middleware, usado para desenvolver, testar, publicar e gerenciar sua aplicação.

Friday, September 30, 2011

Page 29: Open a Window, see the clouds - TechEd 2011

Fabric

StorageCompute

Friday, September 30, 2011

Page 30: Open a Window, see the clouds - TechEd 2011

Compute

Web Role Worker Role VM Role

Aplicação Web rodando sobre o

IIS

Processamento em plano de fundo

Máquina virtual de Windows Server 2008 carregada sob demanda

Friday, September 30, 2011

Page 31: Open a Window, see the clouds - TechEd 2011

Fabric

StorageCompute

Friday, September 30, 2011

Page 32: Open a Window, see the clouds - TechEd 2011

Storage

Table Storage Blob Storage QueueSQL Azure

Compatível com o SQL Server

Armazenamento estruturado

Texto e dados binários

Troca de mensagens entre o Web e o Worker

CDN

Armazenamento de dados

Versão cacheada de qualquer recurso

com uma URI

Friday, September 30, 2011

Page 33: Open a Window, see the clouds - TechEd 2011

PRONTO PRA RODAR

• Requisitos:

• IIS7 e ferramentas

• Azure SDK (instala o DevAppFabric, o simulador de azure)

• Command Line Tools (linha de comando)

• Command line tools for PHP

para Desenvolver e Publicar

Friday, September 30, 2011

Page 34: Open a Window, see the clouds - TechEd 2011

CAIXA DE FERRAMENTAS

• Command Line tools for PHP

• Cria o pacote da aplicação e roda no emulador, simulando o computacional e o armazenamento.

• Azure Tools para Eclipse

• Torna a maioria dos processos “next, next finish” e fornece uma IDE completa.

Friday, September 30, 2011

Page 35: Open a Window, see the clouds - TechEd 2011

Am

biente do Desenvolvedor

Window

Azure

CódigoSimulador Azure (Dev fabric)

Ferramentas de empacotamento(linha de comando ou eclipse)

Azure(AppFabric)

SQLAzure Storage

Pacote + Configuração do Serviço

Friday, September 30, 2011

Page 36: Open a Window, see the clouds - TechEd 2011

Am

biente do Desenvolvedor

Window

Azure

CódigoSimulador Azure (Dev fabric)

Ferramentas de empacotamento(linha de comando ou eclipse)

Azure(AppFabric)

SQLAzure Storage

Pacote + Configuração do Serviço

PHP

Friday, September 30, 2011

Page 37: Open a Window, see the clouds - TechEd 2011

Am

biente do Desenvolvedor

Window

Azure

CódigoSimulador Azure (Dev fabric)

Ferramentas de empacotamento(linha de comando ou eclipse)

Azure(AppFabric)

SQLAzure Storage

Pacote + Configuração do Serviço

PHP

Friday, September 30, 2011

Page 38: Open a Window, see the clouds - TechEd 2011

Am

biente do Desenvolvedor

Window

Azure

CódigoSimulador Azure (Dev fabric)

Ferramentas de empacotamento(linha de comando ou eclipse)

Azure(AppFabric)

SQLAzure Storage

Pacote + Configuração do Serviço

PHP php package.php --project="twitter-azure" --target="c:\azure-build" --source="C:\twitter-azure" --defaultDoc="public/index.php" --phpRuntime="C:\Program Files (x86)\PHP\v5.3" --cleanRebuild --runDevFabric

Friday, September 30, 2011

Page 39: Open a Window, see the clouds - TechEd 2011

Am

biente do Desenvolvedor

Window

Azure

CódigoSimulador Azure (Dev fabric)

Ferramentas de empacotamento(linha de comando ou eclipse)

Azure(AppFabric)

SQLAzure Storage

Pacote + Configuração do Serviço

PHP

Friday, September 30, 2011

Page 40: Open a Window, see the clouds - TechEd 2011

O BOM

• APIs em REST

• Armazenamento

•Diagnósticos

•BD Relacional: SQL Azure

• Arquitetura por “Roles”

Friday, September 30, 2011

Page 41: Open a Window, see the clouds - TechEd 2011

O RUIM

• Gerenciamento apenas pelo Windows

• Sem Emulador Azure para SO não-Windows

• Sem ferramentas de empacotamento para SO não-Windows

Friday, September 30, 2011

Page 42: Open a Window, see the clouds - TechEd 2011

COMO ISSO AFETA MEU CÓDIGO?Que ferramentas podemos usar e como devemos desenhar

nossas aplicações?

Friday, September 30, 2011

Page 43: Open a Window, see the clouds - TechEd 2011

COM O QUE DEVO ME PREOCUPAR?

Friday, September 30, 2011

Page 44: Open a Window, see the clouds - TechEd 2011

Código

COM O QUE DEVO ME PREOCUPAR?

Friday, September 30, 2011

Page 45: Open a Window, see the clouds - TechEd 2011

Código PHP rodando no IIS/Windows

COM O QUE DEVO ME PREOCUPAR?

Friday, September 30, 2011

Page 46: Open a Window, see the clouds - TechEd 2011

Código PHP rodando no IIS/Windows

Arquitetura

COM O QUE DEVO ME PREOCUPAR?

Friday, September 30, 2011

Page 47: Open a Window, see the clouds - TechEd 2011

Código PHP rodando no IIS/Windows

Arquitetura

Escalando a aplicação

COM O QUE DEVO ME PREOCUPAR?

Friday, September 30, 2011

Page 48: Open a Window, see the clouds - TechEd 2011

Código PHP rodando no IIS/Windows

Arquitetura

Sem ArmazenamentoLocal

Escalando a aplicação

COM O QUE DEVO ME PREOCUPAR?

Friday, September 30, 2011

Page 49: Open a Window, see the clouds - TechEd 2011

Código PHP rodando no IIS/Windows

Arquitetura

Sem ArmazenamentoLocal

Compartilhamento de sessão

Escalando a aplicação

COM O QUE DEVO ME PREOCUPAR?

Friday, September 30, 2011

Page 50: Open a Window, see the clouds - TechEd 2011

Código PHP rodando no IIS/Windows

Arquitetura

Sem ArmazenamentoLocal

Worker Roles

Compartilhamento de sessão

Escalando a aplicação

COM O QUE DEVO ME PREOCUPAR?

Friday, September 30, 2011

Page 51: Open a Window, see the clouds - TechEd 2011

Código PHP rodando no IIS/Windows

Arquitetura

Sem ArmazenamentoLocal

Worker Roles

Compartilhamento de sessão

Filas

Escalando a aplicação

COM O QUE DEVO ME PREOCUPAR?

Friday, September 30, 2011

Page 52: Open a Window, see the clouds - TechEd 2011

Código PHP rodando no IIS/Windows

Arquitetura

Armazenamento

Sem ArmazenamentoLocal

Worker Roles

Compartilhamento de sessão

Filas

Escalando a aplicação

COM O QUE DEVO ME PREOCUPAR?

Friday, September 30, 2011

Page 53: Open a Window, see the clouds - TechEd 2011

Código PHP rodando no IIS/Windows

Arquitetura

Armazenamento

Sem ArmazenamentoLocal

Worker Roles

Compartilhamento de sessão

Filas

Que tipo?

Escalando a aplicação

COM O QUE DEVO ME PREOCUPAR?

Friday, September 30, 2011

Page 54: Open a Window, see the clouds - TechEd 2011

Código PHP rodando no IIS/Windows

Arquitetura

Armazenamento

Sem ArmazenamentoLocal

Worker Roles

Compartilhamento de sessão

Filas

Que tipo?Tabela / Blob

Escalando a aplicação

COM O QUE DEVO ME PREOCUPAR?

Friday, September 30, 2011

Page 55: Open a Window, see the clouds - TechEd 2011

Código PHP rodando no IIS/Windows

Arquitetura

Armazenamento

Sem ArmazenamentoLocal

Worker Roles

Compartilhamento de sessão

Filas

Que tipo?Tabela / Blob Framework ou PHP SDK

Escalando a aplicação

COM O QUE DEVO ME PREOCUPAR?

Friday, September 30, 2011

Page 56: Open a Window, see the clouds - TechEd 2011

Código PHP rodando no IIS/Windows

Arquitetura

Armazenamento

Sem ArmazenamentoLocal

Worker Roles

Compartilhamento de sessão

Filas

Que tipo?Banco de Dados

Relacional

Tabela / Blob Framework ou PHP SDK

Escalando a aplicação

COM O QUE DEVO ME PREOCUPAR?

Friday, September 30, 2011

Page 57: Open a Window, see the clouds - TechEd 2011

Código PHP rodando no IIS/Windows

Arquitetura

Armazenamento

Sem ArmazenamentoLocal

Worker Roles

Compartilhamento de sessão

Filas

Que tipo?Banco de Dados

Relacional

Tabela / Blob

Migrar para SQL Azure

Framework ou PHP SDK

Escalando a aplicação

COM O QUE DEVO ME PREOCUPAR?

Friday, September 30, 2011

Page 58: Open a Window, see the clouds - TechEd 2011

FRAMEWORKS PRONTOS PARA O AZURE

Friday, September 30, 2011

Page 59: Open a Window, see the clouds - TechEd 2011

O QUE FAZ ELE SER COMPATÍVEL?

Roda usando PHP no Windows?

Tem wrappers das APIs?

É compatível com MS SQL Server?

Código

Ferramentas

Banco de Dados

Friday, September 30, 2011

Page 60: Open a Window, see the clouds - TechEd 2011

• Blobs, Tables e Queues (operações CRUD)

• Classes auxiliares para transporte HTTP, AuthN/AuthZ, REST and Gerenciamento de Erros

• Gerenciamento, Instrumentação e supporte a logs

• Não testado, mas deve funcionar.

Ferramentas

Banco de Dados

Friday, September 30, 2011

Page 61: Open a Window, see the clouds - TechEd 2011

•Drivers de MS-SQL* são compatíveis com SQLAzure

Powered by Doctrine:

Banco de Dados

* Usando pdo_sql_server, possivelmente o pdo_dblib

Friday, September 30, 2011

Page 62: Open a Window, see the clouds - TechEd 2011

• PHP roda normalmente no Azure, qualquer framework vai funcionar.

•Outras ferramentas para se comunicar com recursos como: BD, Filas etc...

• Estes aqui já foram testados!

Friday, September 30, 2011

Page 63: Open a Window, see the clouds - TechEd 2011

AZURE PHP SDK

• Serviços:

•Blob Storage

•Table Storage

•Queue Storage

•Diagnostic Tools

• Compatível com PHP 5+

Friday, September 30, 2011

Page 64: Open a Window, see the clouds - TechEd 2011

SAINDO PELA JANELA

• Aplicação de teste: “Twitter RT Calculator”

• Objetivo: Analisar sues últimos tweets, verificar quais foram re-tuitados e fazer cálculos baseado em palavras e localizações.

• Exemplificar a migração:

• Banco de dados: MySQL > SQLAzure

• Mover o processamento para um Worker Role e usar a Fila

Aplicação de teste para ilustrar

Friday, September 30, 2011

Page 65: Open a Window, see the clouds - TechEd 2011

SAINDO PELA JANELA

• Aplicação de teste: “Twitter RT Calculator”

• Objetivo: Analisar sues últimos tweets, verificar quais foram re-tuitados e fazer cálculos baseado em palavras e localizações.

• Exemplificar a migração:

• Banco de dados: MySQL > SQLAzure

• Mover o processamento para um Worker Role e usar a Fila

Aplicação de teste para ilustrar

Friday, September 30, 2011

Page 66: Open a Window, see the clouds - TechEd 2011

Twitter OAuth

Segura ai..

Friday, September 30, 2011

Page 67: Open a Window, see the clouds - TechEd 2011

Twitter OAuth

Segura ai..

Friday, September 30, 2011

Page 68: Open a Window, see the clouds - TechEd 2011

Twitter OAuth

Segura ai..

Friday, September 30, 2011

Page 69: Open a Window, see the clouds - TechEd 2011

Twitter OAuth

Segura ai..

MySQL

Friday, September 30, 2011

Page 70: Open a Window, see the clouds - TechEd 2011

Twitter OAuth

Segura ai..

Resultados

MySQL

Friday, September 30, 2011

Page 71: Open a Window, see the clouds - TechEd 2011

Twitter OAuth

Segura ai..

Resultados

MySQL

Friday, September 30, 2011

Page 72: Open a Window, see the clouds - TechEd 2011

Twitter OAuth

Segura ai..

Resultados

MySQL

Friday, September 30, 2011

Page 73: Open a Window, see the clouds - TechEd 2011

Twitter OAuth

Te ligo mais tarde..

Friday, September 30, 2011

Page 74: Open a Window, see the clouds - TechEd 2011

Twitter OAuth

Te ligo mais tarde..

Queue

Friday, September 30, 2011

Page 75: Open a Window, see the clouds - TechEd 2011

Twitter OAuth

Te ligo mais tarde..

Worker

Queue

Friday, September 30, 2011

Page 76: Open a Window, see the clouds - TechEd 2011

Twitter OAuth

Te ligo mais tarde..

Worker

Queue

Friday, September 30, 2011

Page 77: Open a Window, see the clouds - TechEd 2011

Twitter OAuth

Te ligo mais tarde..

Worker

Queue

Friday, September 30, 2011

Page 78: Open a Window, see the clouds - TechEd 2011

Twitter OAuth

Te ligo mais tarde..

Worker

SQLAzure

Queue

Friday, September 30, 2011

Page 79: Open a Window, see the clouds - TechEd 2011

Twitter OAuth

Te ligo mais tarde..

Worker

SQLAzure

Queue

Friday, September 30, 2011

Page 80: Open a Window, see the clouds - TechEd 2011

Twitter OAuth

Te ligo mais tarde..

Resultados

Worker

SQLAzure

Queue

Friday, September 30, 2011

Page 81: Open a Window, see the clouds - TechEd 2011

Twitter OAuth

Te ligo mais tarde..

Resultados

Worker

SQLAzure

Queue

WorkerWorkerWorkerWorkerWorkerWorkerWorkerWorkerWorkerWorker

Friday, September 30, 2011

Page 82: Open a Window, see the clouds - TechEd 2011

USANDO SQLAZURE

doctrine.dbal.connection_options: driver: pdo_sqlsrv dbname: twitter-sample-app host: pl69qjwy8k.database.windows.net port: 1433 user: rdohmsDemo@pl69qjwy8k password: *password*

PDO MSSQL Driver

Friday, September 30, 2011

Page 83: Open a Window, see the clouds - TechEd 2011

TODOS PARA A FILA //Add user to our Queue $qItem = new \stdClass(); $qItem->twitter_handle = $twitterInfo->screen_name; $qManager = new Azure\Queue($this->getApp()->getConfig('azure')); $qManager->addToQueue($qItem);

Friday, September 30, 2011

Page 84: Open a Window, see the clouds - TechEd 2011

TODOS PARA A FILA //Add user to our Queue $qItem = new \stdClass(); $qItem->twitter_handle = $twitterInfo->screen_name; $qManager = new Azure\Queue($this->getApp()->getConfig('azure')); $qManager->addToQueue($qItem);

$this->client = new \Zend_Service_WindowsAzure_Storage_Queue( $qConfig['host'], $qConfig['accountName'], $qConfig['accountKey'] );

$this->queue = $this->getQueueInstance($queueName); __contruct()

Friday, September 30, 2011

Page 85: Open a Window, see the clouds - TechEd 2011

TODOS PARA A FILA //Add user to our Queue $qItem = new \stdClass(); $qItem->twitter_handle = $twitterInfo->screen_name; $qManager = new Azure\Queue($this->getApp()->getConfig('azure')); $qManager->addToQueue($qItem);

$this->client = new \Zend_Service_WindowsAzure_Storage_Queue( $qConfig['host'], $qConfig['accountName'], $qConfig['accountKey'] );

$this->queue = $this->getQueueInstance($queueName);

public function addToQueue($item) { $this->client->putMessage($this->queue->name, serialize($item)); }

__contruct()

Friday, September 30, 2011

Page 86: Open a Window, see the clouds - TechEd 2011

PRIMEIRO QUE ENTRA, PRIMEIRO

QUE SAI

while (true){ try{ $this->logAction("Checking for messages..."); //Read Queue $qMessage = $qManager->getMessage();

//If no message, sleep for 3 seconds and try again if ($qMessage === null){ $this->logAction("No pending messages..."); sleep(3); continue; }

//Retrieve User {... doctrine query for stored twitter handle ...}

//Clear Message $this->logAction("Removing message form queue..."); $qManager->deleteMessage($qMessage);

//Process User $this->processUser($user);

//Warn User $this->sendWarning($user);

} catch (\Exception $e) { $this->logAction("Exception found:" .$e->getMessage()); } $this->logAction("Initiating sleep for next loop."); sleep(2); }

Friday, September 30, 2011

Page 87: Open a Window, see the clouds - TechEd 2011

PRIMEIRO QUE ENTRA, PRIMEIRO

QUE SAI

while (true){ try{ $this->logAction("Checking for messages..."); //Read Queue $qMessage = $qManager->getMessage();

//If no message, sleep for 3 seconds and try again if ($qMessage === null){ $this->logAction("No pending messages..."); sleep(3); continue; }

//Retrieve User {... doctrine query for stored twitter handle ...}

//Clear Message $this->logAction("Removing message form queue..."); $qManager->deleteMessage($qMessage);

//Process User $this->processUser($user);

//Warn User $this->sendWarning($user);

} catch (\Exception $e) { $this->logAction("Exception found:" .$e->getMessage()); } $this->logAction("Initiating sleep for next loop."); sleep(2); }

Friday, September 30, 2011

Page 88: Open a Window, see the clouds - TechEd 2011

PRIMEIRO QUE ENTRA, PRIMEIRO

QUE SAI

while (true){ try{ $this->logAction("Checking for messages..."); //Read Queue $qMessage = $qManager->getMessage();

//If no message, sleep for 3 seconds and try again if ($qMessage === null){ $this->logAction("No pending messages..."); sleep(3); continue; }

//Retrieve User {... doctrine query for stored twitter handle ...}

//Clear Message $this->logAction("Removing message form queue..."); $qManager->deleteMessage($qMessage);

//Process User $this->processUser($user);

//Warn User $this->sendWarning($user);

} catch (\Exception $e) { $this->logAction("Exception found:" .$e->getMessage()); } $this->logAction("Initiating sleep for next loop."); sleep(2); }

public function getMessage() { $messages = $this->client->getMessages($this->queue->name, 1); if (count($messages) > 0){ $qMessage = array_shift($messages); $message = new \stdClass(); $message->qMessage = $qMessage; $message->decoded = unserialize($qMessage->messagetext); return $message; } return null; }

Friday, September 30, 2011

Page 89: Open a Window, see the clouds - TechEd 2011

PRIMEIRO QUE ENTRA, PRIMEIRO

QUE SAI

while (true){ try{ $this->logAction("Checking for messages..."); //Read Queue $qMessage = $qManager->getMessage();

//If no message, sleep for 3 seconds and try again if ($qMessage === null){ $this->logAction("No pending messages..."); sleep(3); continue; }

//Retrieve User {... doctrine query for stored twitter handle ...}

//Clear Message $this->logAction("Removing message form queue..."); $qManager->deleteMessage($qMessage);

//Process User $this->processUser($user);

//Warn User $this->sendWarning($user);

} catch (\Exception $e) { $this->logAction("Exception found:" .$e->getMessage()); } $this->logAction("Initiating sleep for next loop."); sleep(2); }

public function getMessage() { $messages = $this->client->getMessages($this->queue->name, 1); if (count($messages) > 0){ $qMessage = array_shift($messages); $message = new \stdClass(); $message->qMessage = $qMessage; $message->decoded = unserialize($qMessage->messagetext); return $message; } return null; }

array( 'messageid' => $messageId, 'insertiontime' => $insertionTime, 'expirationtime' => $expirationTime, 'popreceipt' => $popReceipt, 'timenextvisible' => $timeNextVisible, 'dequeuecount' => $dequeueCount, 'messagetext' => $messageText );

Friday, September 30, 2011

Page 90: Open a Window, see the clouds - TechEd 2011

PRIMEIRO QUE ENTRA, PRIMEIRO

QUE SAI

while (true){ try{ $this->logAction("Checking for messages..."); //Read Queue $qMessage = $qManager->getMessage();

//If no message, sleep for 3 seconds and try again if ($qMessage === null){ $this->logAction("No pending messages..."); sleep(3); continue; }

//Retrieve User {... doctrine query for stored twitter handle ...}

//Clear Message $this->logAction("Removing message form queue..."); $qManager->deleteMessage($qMessage);

//Process User $this->processUser($user);

//Warn User $this->sendWarning($user);

} catch (\Exception $e) { $this->logAction("Exception found:" .$e->getMessage()); } $this->logAction("Initiating sleep for next loop."); sleep(2); }

Friday, September 30, 2011

Page 91: Open a Window, see the clouds - TechEd 2011

PRIMEIRO QUE ENTRA, PRIMEIRO

QUE SAI

while (true){ try{ $this->logAction("Checking for messages..."); //Read Queue $qMessage = $qManager->getMessage();

//If no message, sleep for 3 seconds and try again if ($qMessage === null){ $this->logAction("No pending messages..."); sleep(3); continue; }

//Retrieve User {... doctrine query for stored twitter handle ...}

//Clear Message $this->logAction("Removing message form queue..."); $qManager->deleteMessage($qMessage);

//Process User $this->processUser($user);

//Warn User $this->sendWarning($user);

} catch (\Exception $e) { $this->logAction("Exception found:" .$e->getMessage()); } $this->logAction("Initiating sleep for next loop."); sleep(2); }

Após 20 segundos, a mensagem volta para a fila

Friday, September 30, 2011

Page 92: Open a Window, see the clouds - TechEd 2011

SAINDO PELA JANELA

• Veja todas mudanças: github.com/rdohms/Sample-Azure-App

• Compare estes branches:

non-cloud-version x cloud-designed-version

Friday, September 30, 2011

Page 93: Open a Window, see the clouds - TechEd 2011

FECHANDO A JANELA

•Descobrimos o que é a nuvem

• Vimos razões por que escolher a nuvem

• Conhecemos o Windows Azure e seus recursos

•Olhamos rapidamente em como isso afeta nosso código

Friday, September 30, 2011

Page 94: Open a Window, see the clouds - TechEd 2011

LEITURA COMPLEMENTAR...

PHP Development in the Cloud

ISBN: 9780981034522Pages: 172Authors: Ivo Jansch and Vito Chin

http://bit.ly/i9Awk0

Friday, September 30, 2011

Page 95: Open a Window, see the clouds - TechEd 2011

COMECE A BRINCAR..

• Conta de teste gratuita: WindowsAzurePass.com

http://azurephp.comhttp://phpazure.codeplex.com/

http://azurephptools.codeplex.com/http://www.ben-waine.co.uk/blog/php-azure

http://marvelley.com/category/php/php-on-azure/

Friday, September 30, 2011

Page 96: Open a Window, see the clouds - TechEd 2011

[email protected]

twitter.com/rdohmshttp://doh.ms

Perguntas?

http://slides.doh.ms

Friday, September 30, 2011