Links: Se quiser aprender mais sobre programação e tecnologia em geral, aqui tem 10% de desconto na Alura: alura.tv/diasdedev E se quiser apoiar o canal e me incentivar a continuar criando conteúdo gratuito, você pode considerar me dar um "Valeu Demais" aqui no RUclips ou se tornar um "sponsor" lá no GitHub: github.com/sponsors/CViniciusSDias Post no blog falando como o PHP é executado na Web: dias.dev/2021-06-15-como-o-php-funciona-na-web/ Post no blog sobre I/O não bloqueante (programação assíncrona) com PHP puro: dias.dev/2020-09-16-php-assincrono-de-forma-nativa/ Projeto utilizado no vídeo para realizar o benchmark: github.com/CViniciusSDias/frankenphp-swoole-octane
Como sempre, informação de qualidade e direto ao ponto! Como tenho pouco tempo de área, e normalmente não participo de decisões do tipo ao arquitetar uma aplicação, acabo me perguntando em quais casos seria interessante utilizar o PHP com esse tipo de abordagem, igual do Swoole ou Franken PHP. Via de regra, só seria válido em aplicações robustas onde o número de requisições são altíssimas? Ou seria o caso de não utilizar mais o PHP FPM e priorizar sempre essas abordagens mais modernas? Fico me perguntando quais os critérios para decidir algo do tipo :D ....Valeu! Um abraço.
Eu só iria pra essas abordagens onde o número de requisições for alto suficiente pro php-fpm ser um gargalo na aplicação. O custo de migrar pra essa arquitetura pode ser bem baixo se o sistema for corretamente desenvolvido. E se o sistema não for corretamente desenvolvido, então ter usado essa abordagem desde o início poderia ter sido desastroso. Rsrsrsrs
Muuuito interessante, e aí a aplicação roda normalmente? Digo, eu só vi por alto, mas parece que no Swoole você precisa usar métodos específicos para utiliza-lo satisfatoriamente. Com FrankenPHP seria possível apenas migrar uma aplicação já existente sem maiores configurações? Talvez um vídeo sobre isso ficasse bacana
Com Swoole não precisa fazer nada diferente não, se usar o Octane. Só usar e tirar proveito também. A aplicação roda normalmente com as limitações descritas na doc do Octane. Fora do Octane a história muda. Swoole tem mais poderes do que o FrankenPHP. É perfeitamente possível rodar uma aplicação que roda no PHP-FPM com FrankenPHP sem mexer em nada, mas pra usar o worker mode, que é o que traz mais performance, precisa se atentar aos mesmos detalhes do que com Swoole.
Pra essa não precisa de vídeo. Tá aqui: Perspectiva é a mesma de todos os anos. Uma das melhores linguagens para se aprender e usar na Web. Não para de evoluir e melhorar, apesar de continuarem dizendo que vai morrer. Nada novo sob o sol. hahahah
Aguardando o quê? O PHP morrer? Vixi, tem muito mais do que 4 anos que dizem que ele tá morrendo. Tá mais perto dos 20 anos de tentativa de acabar com o coitado. kkkkkk
@@DiasDeDev o ponto não seria sobre isso. É conversa antiga essa parte ai. Uma visão sobre as i.as, implementações com ela nos projetos e o que esperar para 2024.
Interessante em Lorde. No caso do swoole e octane existe uma preocupaçao com o compartilhamento de informações entre as requests. O mesmo se aplica ao frankenPhp sera?
Fala Vinícius, sabe informar qual é aquele site que você mencionava lá no curso de git da alura, era um site que tinha várias opções de formatação para git. Abs
Uma dúvida com relação ao deploy usando Swoole/Franken. Geralmente usando Nginx + FPM, posso fazer o deploy de boas, pois, na próxima requisição já tera o código atualizado. Mas Swoole/Franken mantém a aplicação rodando após subir na primeira vez. Se eu fizer um deploy, como seria o fluxo? Eles fornecem algum Hot Reload? Durante o deploy o sistema iria ficar "offline" até subir o servidor novamente?
Você reinicia o servidor no deploy. Se a aplicação precisa de coisas como frankenphp ou swoole, ela vai ter um esquema de blue-green ou coisa do tipo, então não precisa ter downtime. ;-)
Legal, tinha ouvido falar e até vi o PR que o criador do FrankenPHP fez para o Laravel. Dúvida: as requests que caem no Caddy com FrankenPHP compartilham memória por estar sendo executadas em uma goroutine? Ou seja: preciso me preocupar com vazamento de memória, principalmente quando estou lidando com objetos singleton, ou o FrankenPHP "resolve" (coloquei entre aspas, pois não é um problema, mas um comportamento) isso?
Se estiver usando o "worker mode", sim, precisa se preocupar. Até por isso na documentação do Octane esses problemas são citados. No worker mode, todo o seu projeto é inicializado e cada requisição é tratada nesse mesmo processo. Singleton e propriedades estáticas são os principais vilões, principalmente em projetos Laravel.
E como fica as variaveis estáticas? Pq no método tradicional, elas somem após finalizar a requisição... No frankem ela se manteira como em outras linguagens?
Não. Esses benchmarks não devem ser levados a sério (assim como o meu também não). Não são feitos em ambientes controlados e muita coisa pode interferir. O ponto principal, tanto nesse vídeo quanto no post que você viu, é o seguinte: a performance de ambos é muito similar quando usado dentro do Octane.
Esse era o nome original do ReactPHP. Mas ele e o node estavam surgindo ao mesmo tempo com a exata mesma ideia. Mas o Node não trouxe nenhuma novidade e esse modelo de execução é usado por diversas linguagens e runtimes. ;-)
@@DiasDeDev não estou desmerecendo o PHP, nasci nesse berço e sei da importância que ele tem pra mim até hoje e pra web de forma geral... mas vejo esse movimento como um reconhecimento do event loop do node
Mas EventLoop não é do node. Inclusive o ReactPHP surgiu na mesma época que o Node.js com exatamente a mesma ideia. rsrsrs Node só usa um conceito super antigo, assim como o PHP também usa. :-D FrankenPHP é só mais uma ferramenta que faz uso da técnica e Event Loop nem é a novidade na ferramenta. rsrsrs
Vinicius, se me permite tirar uma dúvida, você recomendaria assinar a php[architect] hoje em dia? Dito isso, excelente video!! Tenho buscado estudar sobre reactphp e swoole recentemente, seu canal, curso na alura e esse canal aqui: ruclips.net/p/PLKIEFFgNQYpVmUAKUjT_BRYYOdMHwGt0v tem me auxiliado bastante.
Eu só tenho uma edição da magazine (impressa) que é a edição pra qual eu escrevi. Se o valor não for pesar pra você, não vejo mal nenhum em assinar. Mas não é nenhum tipo de "conteúdo exclusivo" ou "premium" não.
Não sei vcs, mas eu particularmente sinto um desconforto mt grande quando vejo em uma solução para uma linguagem que usa outra linguagem como base por trás, ou seja, o FrankenPHP usar o GO é mesmo que descredibilizar totalmente o PHP e dizer que ele n consegue ser bom sozinho. KKKK parece bobagem mas sei lá, eu acabo tendo essa ideia. 😅
@@oi.magão você errou totalmente a pontuação do seu comentário, também precisa estudar. eu não uso letra maiúscula por opção, é apenas estilo pessoal, não interfere o entendimento e é muito diferente de errar gramática. 😘
Links:
Se quiser aprender mais sobre programação e tecnologia em geral, aqui tem 10% de desconto na Alura:
alura.tv/diasdedev
E se quiser apoiar o canal e me incentivar a continuar criando conteúdo gratuito, você pode considerar me dar um "Valeu Demais" aqui no RUclips ou se tornar um "sponsor" lá no GitHub:
github.com/sponsors/CViniciusSDias
Post no blog falando como o PHP é executado na Web:
dias.dev/2021-06-15-como-o-php-funciona-na-web/
Post no blog sobre I/O não bloqueante (programação assíncrona) com PHP puro:
dias.dev/2020-09-16-php-assincrono-de-forma-nativa/
Projeto utilizado no vídeo para realizar o benchmark:
github.com/CViniciusSDias/frankenphp-swoole-octane
Mano, conteúdo e didática muito acima da média, parabéns!
Fico muito feliz que esteja gostando. :-D
Como aguardava isso! Continue trazendo conteúdo no canal!
Opa, espero que goste do vídeo.
😁😁
Muito bem explicado. Podia ter adicionado benchmarks com o PHP-FPM + Nginx padrão para efeito de comparação.
Boa, Renato. Podia mesmo.
Ótimo conteúdo, vim seco só pra ver o lance do FrankenPHP mas vc deu uma aula sobre servidores, muito bom cara!
Fico feliz demais que tenha curtido. E obrigado por ter sugerido esse tema!
🤩
Esperei muito por esse video aqui hein, animado
Espero que goste.
😁
Traz mais conteúdo de Machine learning em php, gostei bastante do seu video do rubix ml
Vou preparar algo sim.
😁
Como sempre, informação de qualidade e direto ao ponto! Como tenho pouco tempo de área, e normalmente não participo de decisões do tipo ao arquitetar uma aplicação, acabo me perguntando em quais casos seria interessante utilizar o PHP com esse tipo de abordagem, igual do Swoole ou Franken PHP. Via de regra, só seria válido em aplicações robustas onde o número de requisições são altíssimas? Ou seria o caso de não utilizar mais o PHP FPM e priorizar sempre essas abordagens mais modernas? Fico me perguntando quais os critérios para decidir algo do tipo :D ....Valeu! Um abraço.
Eu só iria pra essas abordagens onde o número de requisições for alto suficiente pro php-fpm ser um gargalo na aplicação.
O custo de migrar pra essa arquitetura pode ser bem baixo se o sistema for corretamente desenvolvido. E se o sistema não for corretamente desenvolvido, então ter usado essa abordagem desde o início poderia ter sido desastroso. Rsrsrsrs
mais uma mega aula do carlāo!!
manja de mais!
tmj sempre
Heheheh
Carlão me pegou. kkkkk
Boaaaa!!! Conteúdo top d+! ❤
Muito obrigado 😁
Mano, que explicação do caralh*! Muito bom! Obrigado!
Que bom que curtiu, mano! :-D
Muito bom. Parabéns. Sabe informar se o frankenphp com octane is battle tested for production ?
É um projeto relativamente recente, mas bem ativo. Eu usaria sem receios, mas atualizaria com frequência.
Muuuito interessante, e aí a aplicação roda normalmente? Digo, eu só vi por alto, mas parece que no Swoole você precisa usar métodos específicos para utiliza-lo satisfatoriamente. Com FrankenPHP seria possível apenas migrar uma aplicação já existente sem maiores configurações? Talvez um vídeo sobre isso ficasse bacana
Com Swoole não precisa fazer nada diferente não, se usar o Octane. Só usar e tirar proveito também. A aplicação roda normalmente com as limitações descritas na doc do Octane.
Fora do Octane a história muda. Swoole tem mais poderes do que o FrankenPHP.
É perfeitamente possível rodar uma aplicação que roda no PHP-FPM com FrankenPHP sem mexer em nada, mas pra usar o worker mode, que é o que traz mais performance, precisa se atentar aos mesmos detalhes do que com Swoole.
@@DiasDeDev Hmmm entendo entendo
Muito bom claro e profundo.
Que bom que gostou 😁
Excelente vídeo, parabéns!
Que bom que curtiu! :-D
Po amigo, eu mexo com som tbm, e dá muito agonia essa "sobra" parecendo uma microfonia. rsrsrs Coloca algumas espumas ai pra amenizar.
PHP tenho uma vontade imensa de aprender essa linguagem, acho muito massa. Estou me organizando, quem sabe um dia entre de cabeça de vez.
É uma ótima linguagem! 😁
Ótimo contéudo sobre o assunto
Que bom que gostou!
🤩
Fala sobre o php em 2024 por favor. E também a sua perspectiva sobre esse ano. Ainda confuso, já tenho o php como stack, mas meio incerto sobre 2024
Pra essa não precisa de vídeo. Tá aqui:
Perspectiva é a mesma de todos os anos. Uma das melhores linguagens para se aprender e usar na Web. Não para de evoluir e melhorar, apesar de continuarem dizendo que vai morrer. Nada novo sob o sol. hahahah
estamos a 4 anos aguardando
Aguardando o quê? O PHP morrer? Vixi, tem muito mais do que 4 anos que dizem que ele tá morrendo. Tá mais perto dos 20 anos de tentativa de acabar com o coitado. kkkkkk
@@DiasDeDev sim kakakak 4 anos eu to ouvindo que Python e JS vai acabar com ele
@@DiasDeDev o ponto não seria sobre isso. É conversa antiga essa parte ai. Uma visão sobre as i.as, implementações com ela nos projetos e o que esperar para 2024.
Faz vídeo sobre hyperf
To querendo fazer há um tempo, mas queria preparar com mais carinho. Tá faltando tempo. rsrsrs
Mas valeu pela sugestão. :-D
Interessante em Lorde. No caso do swoole e octane existe uma preocupaçao com o compartilhamento de informações entre as requests. O mesmo se aplica ao frankenPhp sera?
Sim sim. Isso é uma característica inerente à abordagem de subir sua aplicação 1x e deixá-la rodando pra sempre
Fala Vinícius, sabe informar qual é aquele site que você mencionava lá no curso de git da alura, era um site que tinha várias opções de formatação para git. Abs
Só me lembro de mostrar a documentação do git mesmo.
@@DiasDeDev vixi, era um git e Github compartilhe seu código da Oracle one, tinha uma parte logo depois de você mostrar a ferramenta vizualizingGit kk
Uma dúvida com relação ao deploy usando Swoole/Franken.
Geralmente usando Nginx + FPM, posso fazer o deploy de boas, pois, na próxima requisição já tera o código atualizado.
Mas Swoole/Franken mantém a aplicação rodando após subir na primeira vez. Se eu fizer um deploy, como seria o fluxo? Eles fornecem algum Hot Reload? Durante o deploy o sistema iria ficar "offline" até subir o servidor novamente?
Você reinicia o servidor no deploy. Se a aplicação precisa de coisas como frankenphp ou swoole, ela vai ter um esquema de blue-green ou coisa do tipo, então não precisa ter downtime. ;-)
PS.: com opcache preload você precisa reiniciar o servidor php-fpm também ao fazer deploy.
Legal, tinha ouvido falar e até vi o PR que o criador do FrankenPHP fez para o Laravel. Dúvida: as requests que caem no Caddy com FrankenPHP compartilham memória por estar sendo executadas em uma goroutine? Ou seja: preciso me preocupar com vazamento de memória, principalmente quando estou lidando com objetos singleton, ou o FrankenPHP "resolve" (coloquei entre aspas, pois não é um problema, mas um comportamento) isso?
Se estiver usando o "worker mode", sim, precisa se preocupar. Até por isso na documentação do Octane esses problemas são citados.
No worker mode, todo o seu projeto é inicializado e cada requisição é tratada nesse mesmo processo.
Singleton e propriedades estáticas são os principais vilões, principalmente em projetos Laravel.
E como fica as variaveis estáticas? Pq no método tradicional, elas somem após finalizar a requisição... No frankem ela se manteira como em outras linguagens?
Sim, elas se mantém entre as requisições. É preciso tomar cuidado.
Boooooooooooa.. parabéns pelo vídeo.
Que bom que curtiu! :-D
Meu sonho é ver o php trabalhar com c++. Imagina trabalhar com php para desenvolver jogos estilo da unreal 😮... seria muito bom
Qual é esse editor de código?
É uma IDE. PHPStorm
PHP e vida
😁
E aquele blog post do laravel com benchmark dizendo que o FrankenPHP tinha um tempo médio de resposta bem menor que o Swoole? Era fake news do zap?
Não. Esses benchmarks não devem ser levados a sério (assim como o meu também não).
Não são feitos em ambientes controlados e muita coisa pode interferir. O ponto principal, tanto nesse vídeo quanto no post que você viu, é o seguinte: a performance de ambos é muito similar quando usado dentro do Octane.
@@DiasDeDev Saquei 😁
👉🔔👈
meu objetivo em 2024 e ter o ingles afiado igual do carlāo.
Dá pra ser melhor que eu, pow. rsrsrsrs
NodePHP
Esse era o nome original do ReactPHP. Mas ele e o node estavam surgindo ao mesmo tempo com a exata mesma ideia.
Mas o Node não trouxe nenhuma novidade e esse modelo de execução é usado por diversas linguagens e runtimes. ;-)
Sinistrooo
:-D
kkk... node que voa bruxão!
PHP > Node
👍
Voa alto nos problemas de dependencias deprecaciadas
@@DiasDeDev não estou desmerecendo o PHP, nasci nesse berço e sei da importância que ele tem pra mim até hoje e pra web de forma geral... mas vejo esse movimento como um reconhecimento do event loop do node
@@h.s3187 dependências são feitas por pessoas/comunidades, não entendi porque esse é um problema do node...
Mas EventLoop não é do node. Inclusive o ReactPHP surgiu na mesma época que o Node.js com exatamente a mesma ideia. rsrsrs
Node só usa um conceito super antigo, assim como o PHP também usa. :-D
FrankenPHP é só mais uma ferramenta que faz uso da técnica e Event Loop nem é a novidade na ferramenta. rsrsrs
Vinicius, se me permite tirar uma dúvida, você recomendaria assinar a php[architect] hoje em dia? Dito isso, excelente video!! Tenho buscado estudar sobre reactphp e swoole recentemente, seu canal, curso na alura e esse canal aqui: ruclips.net/p/PLKIEFFgNQYpVmUAKUjT_BRYYOdMHwGt0v tem me auxiliado bastante.
Eu só tenho uma edição da magazine (impressa) que é a edição pra qual eu escrevi. Se o valor não for pesar pra você, não vejo mal nenhum em assinar. Mas não é nenhum tipo de "conteúdo exclusivo" ou "premium" não.
Compreendi, obrigado pela explicação!!@@DiasDeDev
Não sei vcs, mas eu particularmente sinto um desconforto mt grande quando vejo em uma solução para uma linguagem que usa outra linguagem como base por trás, ou seja, o FrankenPHP usar o GO é mesmo que descredibilizar totalmente o PHP e dizer que ele n consegue ser bom sozinho. KKKK parece bobagem mas sei lá, eu acabo tendo essa ideia. 😅
Não faz muito sentido não. O FrankenPHP usa Go porque o Caddy foi feito em Go, então facilita essa integração.
A preocupação dele parece ser válida. São concorrentes, vai chegar um dia que o Go vai descontinuar essa "parceria" e o framework ficará na mão
Php estudo muito mais não consigo emprego
talvez falte estudar português pra aprender a diferença entre "mas" e "mais"
@@oi.magão você errou totalmente a pontuação do seu comentário, também precisa estudar. eu não uso letra maiúscula por opção, é apenas estilo pessoal, não interfere o entendimento e é muito diferente de errar gramática. 😘
@@oi.magãoo engraçado é ele tentando justificar a própria cilada, adoro ver esses fiscais de comentários caindo na própria armadilha kkkkkkkk
@@oi.magão não vou te dar aula. pague um bom professor, melhor que eu, pra te dar essa consultoria. te garanto que tem erros no seu comentário.
@@oi.magão
ele deveria estudar
letra minusculA
que ao menos você escreva corretamente
nodezaram o php? Não vou mentir que não gostei ein
ReactPHP surgiu antes do Node, sabia? rsrsrs
EventLoop não foi criado pelo Node. :-D
Já fez uma app que consome Gui nativa em qualquer os? Pode ser Windows 3.11 ou ainda mais antigo... Vc vai precisar de um event loop