Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
Precisa testar? - Parte 1
Next
Download to read offline and view in fullscreen.

Share

Processamento Assíncrono com PHP

Download to read offline

Palestra sobre processamento assíncrono e utilização do RabbitMQ para criar uma fila.

Related Books

Free with a 30 day trial from Scribd

See all

Processamento Assíncrono com PHP

  1. 1. Processamento assíncrono com PHP Fernando Fabricio dos Santos
  2. 2. devparana.org
  3. 3. Objetivos ● Definição de fluxos síncronos e assíncronos ● O que são sinais e interrupções? ● Qual a finalidade? ● Como funcionam os sinais? ● Como devo tratá-los?
  4. 4. Avisos ● Estamos falando de PHP para uso em processos ● A extensão pcntl não funciona no windows
  5. 5. Extensão Para utilizar sinais com PHP é necessário a extensão PCNTL habilitada
  6. 6. Modelo de Fluxo SÍNCRONO vs ASSÍNCRONO https://thenerdsofcolor.files.wordpress.com/2014/10/civil-war-mcu-e1413315304464.jpeg
  7. 7. Fluxo síncrono ● Uma tarefa executada por vez ● Executadas em sequência ● Tarefas são sempre executadas na mesma ordem ● Um erro pode impedir a execução de tarefas posteriores http://cs.brown.edu/courses/cs168/s12/handouts/async.pdf
  8. 8. Thread ● Múltiplas Threads ● Tarefas executadas ao mesmo tempo ● Tarefas são executadas independente do resultado obtido pela anterior http://cs.brown.edu/courses/cs168/s12/handouts/async.pdf
  9. 9. Fluxo assíncrono ● Controle da execução pode ser feito no próprio software ● É executado no mesmo processo ● Callbacks (call_user_func ou outra função que receba um callback como parâmetro) http://cs.brown.edu/courses/cs168/s12/handouts/async.pdf
  10. 10. http://arquiteturadeinformacao.com/usabilidade
  11. 11. Como funciona uma fila?
  12. 12. docker-compose.yml rabbit: image: rabbitmq ports: - "5672:5672"
  13. 13. composer.json { "name": "ffsantos/teste", "require": { "php-amqplib/php-amqplib": "^2.6" } }
  14. 14. sender.php <?php require_once __DIR__ . '/vendor/autoload.php'; use PhpAmqpLibConnectionAMQPStreamConnection; use PhpAmqpLibMessageAMQPMessage; $connection = new AMQPStreamConnection( 'localhost', 5672, 'guest', 'guest' ); $channel = $connection->channel(); $channel->queue_declare('hello', false, false, false, false); $msg = new AMQPMessage('Hello World!'); $channel->basic_publish($msg, '', 'hello'); echo " [x] Sent 'Hello World!'n";
  15. 15. consumer.php <?php require_once __DIR__ . '/vendor/autoload.php'; use PhpAmqpLibConnectionAMQPStreamConnection; $connection = new AMQPStreamConnection( 'localhost', 5672, 'guest', 'guest' ); $channel = $connection->channel(); $channel->queue_declare('hello', false, false, false, false); echo ' [*] Waiting for messages. To exit press CTRL+C', "n"; $callback = function ($msg) { echo " [x] Received ", $msg->body, "n"; }; $channel->basic_consume('hello', '', false, true, false, false, $callback); while (count($channel->callbacks)) { $channel->wait(); }
  16. 16. Perguntas?
  • tarciziovn

    Jul. 10, 2020

Palestra sobre processamento assíncrono e utilização do RabbitMQ para criar uma fila.

Views

Total views

1,024

On Slideshare

0

From embeds

0

Number of embeds

3

Actions

Downloads

5

Shares

0

Comments

0

Likes

1

×