24
Introdução a Worker

Introdução a worker 2.0

Embed Size (px)

Citation preview

Page 1: Introdução a worker 2.0

Introdução a Worker ⚙

Page 2: Introdução a worker 2.0

sergiors.com github.com/sergiors

Page 3: Introdução a worker 2.0

Dúvidas?@serg1ors #scdevsummit

Page 4: Introdução a worker 2.0

Fatal error: Allowed memory size of …

Page 5: Introdução a worker 2.0

Worker ⚙⁉

Page 6: Introdução a worker 2.0

Um processo que fica rodando, esperando por tarefas do "usuário".

Page 7: Introdução a worker 2.0

Seus workers, seus processos. É necessário ter o controle

do servidor.

Page 8: Introdução a worker 2.0

Worker Message Queue

!=

Page 9: Introdução a worker 2.0

Job

Message Queue

Worker

Qualquer tarefa (trabalho) que deseja fazer

Responsável por gerenciar suas tarefas. Ex: Beanstalkd, RabbitMQ,

Gearman

Executa (consome) as tarefas

Page 10: Introdução a worker 2.0

Job Message Queue Worker

Page 11: Introdução a worker 2.0

Processes que podem causar latência;

Page 12: Introdução a worker 2.0

Jobs diferentes,

Workers diferentes⁉

Page 13: Introdução a worker 2.0

Command Pattern

Page 14: Introdução a worker 2.0

pseudocode

interface CommandInterface { execute()}

Page 15: Introdução a worker 2.0

pseudocode

class Invoker{ setCommand(CommandInterface $command) run() }

Page 16: Introdução a worker 2.0

pseudocode

$user = new User(10); $tweet = new TweetCommand( '#beer depois do #tdc?' $user); $pheanstalk->put(serialize($tweet));

Page 17: Introdução a worker 2.0

pseudocode

while ($job = $queue->reserve()) { $command = unserialize($job->getData()); try { if ($command instanceof CommandInterface) { $invoker->setCommand($command); $invoker->run(); $queue->delete($job); } } catch (\Exception $e) { }}

php7 👏

Page 18: Introdução a worker 2.0

monolog#protip

Page 19: Introdução a worker 2.0

Serializer

Page 20: Introdução a worker 2.0

max_execution_time: The default setting is 30. When running PHP from the command

line the default setting is 0.

Page 21: Introdução a worker 2.0

set_time_limit(0); 😤😤😤

Page 22: Introdução a worker 2.0

• posix • pcntl • pthreads

Process Control

Page 23: Introdução a worker 2.0

Asynchronous 👊👊👊

Page 24: Introdução a worker 2.0

Obrigado! 🍺🍻