Apliquei os conceitos de Generators e Fibers separadamente para ler um arquivo de 120MB sem consumir toda a memória

Overview

Big File Challenge

Este desafio foi proposto pelo Zanfranceschi

Você pode ver a proposta do desafio aqui ou então pelo Twitter

Para a implementação da solução utilizei os seguintes conceitos:

Explicação

O grande ponto do desafio é limitar sua infra, onde não é possível sua aplicação carregar em memória um arquivo enorme, dessa forma resolvi utilizar Generators que trabalha com Corrotinas e Fibers que permite trabalhar também com Corrotinas no PHP 8.1 >

A ideia de corrotinas é permitir que um processo seja parado, retorne para a função principal e em seguida volte para o mesmo ponto para continuar executando o processo. A ideia de corrotinas permite trabalhar de forma assíncrona!

Como executar o projeto:

1 - Clone este repositório:

git clone [email protected]:NicolasPereira/process-big-file-php.git

2 - Crie o arquivo gigante

php gerador-de-arquivo.php

3 - Para rodar usando generators execute

cd src/Generators
php generators.php

4 - Para rodar usando Fibers execute

cd src/Fibers
php fibers.php

Para rodar utilizando Fibers é necessário utilizar o PHP 8.1

Pontos a melhorar

Preciso dockerizar o projeto para o docker limitar a memória, para o teste alterei a memória do php no php.ini

You might also like...
Plugins para Adianti Framework
Plugins para Adianti Framework

Adianti-Plugins Plugins para Adianti Framework Componentes disponíveis Componente Fonte de abstração VanillaDBTree https://github.com/finom/vanillatre

Projeto de TCC. Sistema para melhoria de gestão e administração de bibliotecas.

TCC PROJETO ATHENA. (BIBLIOTECA ATHENA). Projeto criado por mim e integrantes do meu grupo de TCC na ETEC Juscelino Kubitschek de Oliveira. INTEGRANTE

Aplicação criada com Angular e Laravel em conjunto para fazer um treinamento de autenticação com sistema de login, guarda de rotas e cadastro de usuários no banco de dados MySQL
Aplicação criada com Angular e Laravel em conjunto para fazer um treinamento de autenticação com sistema de login, guarda de rotas e cadastro de usuários no banco de dados MySQL

Times-de-Futebol-BR Descrição do Projeto Aplicação criada com Angular e Laravel em conjunto para fazer um treinamento de autenticação com sistema de l

Projeto pessoal, cuja finalidade principal é apresentar uma sugestão de APi para procedimentos de transferências financeiras simplificada entre usuários. Projeto em Laravel.

Desafio Autor: Fábio Sousa de Sant'Ana Projeto pessoal, cuja finalidade principal é apresentar uma sugestão de APi para procedimentos de transferência

Repositório, usado para testar integração entre laravel e vercel

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Plugin para mostrar el precio a 3,6,12 Meses sin Intereses en la página individual de productos de WooCommerce.
Plugin para mostrar el precio a 3,6,12 Meses sin Intereses en la página individual de productos de WooCommerce.

Plugin de WooCommerce para El Buen Fin (México) Plugin para mostrar el precio a 3,6,12 Meses sin Intereses en la página individual de productos de Woo

Practice-php - Repositório para praticar a sintaxe de php.

Configuração Inicial para desenvolver em PHP Instalando o PHP no Linux (Ubuntu) sudo apt install php libapache2-mod-php sudo apt-get update Utilizand

Realice un programa en cualquier lenguaje de programación en el cual implemente un sistema de registro de asistencias para los ayudantes y becarios del LTIC.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Tradução Magento 2 oficial para português do Brasil do site Crowdin

Tradução para Magento 2 em Português do Brasil (pt_BR) Inclui a tradução mais atualizada para todas as versões do Magento 2. Esse pacote de linguagem

Owner
Nicolas Pereira
21 anos | FullStack Web Dev | JS | PHP
Nicolas Pereira
Jéssica Paula 7 Aug 12, 2022
Este es un sitema bibliotecario para registro de adquisiciones y prestamos para INATEC Siuna

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

James Reyes 3 Mar 26, 2022
Plugin de Wordpress para criar um Hacker News-like para o ManualdoUsuario.net

?? Órbita Plugin de Wordpress para criar um painel de debates baseado em links, similar ao Hacker News, para o Manual do Usuário. Rodar o projeto Requ

Gabriel Nunes 7 Nov 14, 2022
Herramienta para limpiar Comprobantes Fiscales Digitales v3.3

phpcfdi/cfdi-cleaner Herramienta para limpiar Comprobantes Fiscales Digitales por Internet mexicanos. ???? The documentation of this project is in spa

phpCfdi 10 Sep 24, 2022
Uma solucão simples para integrar sua aplicação Laravel a API PIX do Banco Central do Brasil

Uma solução simples para integrar a sua aplicação Laravel com a API PIX do Banco Central do Brasil Instalação Publicando os assets Publicando o arquiv

Mateus Junges 74 Dec 19, 2022
Projeto utilizado para prática de TDD usando PHP com a equipe de desenvolvimento.

?? TDD com PHP ?? Detalhamento do projeto Projeto desenvolvido durante um DOJO que organizei com os colegas de equipe da GAM Distribuidora. A proposta

Felipe Fernandes 3 Sep 11, 2021
Biblioteca para busca (on-line) de estados e os seus respectivos municípios via API disponibilizada pelo IBGE.

LocalidadeX Biblioteca para busca (on-line) e listagem de estados e seus respectivos municípios, efetua a consulta via API do IBGE, disponibilizando o

Estênio Mariano 3 Feb 12, 2022
Imagem de Laravel com Docker para projetos futuros

LaraDocker Este projeto foi criado com a intensão de facilitar o desenvolvimento de novos projetos que podem a ser desenvolvidos por mim, ou por outra

Silas S. da Silva. 1 Nov 6, 2021
Capitalize uma frase para o padrão brasileiro de capitalização.

php-capitalize-pt-br Esta biblioteca basicamente está resumida em uma única função. Ela capitaliza uma frase para o padrão brasileiro de capitalização

Cristian Curtinaz 15 Jan 4, 2023
Um container colaborativo de inteligência artificial para análise de ativos da b3

B3 Analyser Um container colaborativo de inteligência artificial para análise de ativos da b3 Como colaborar? Faça um FORK do projeto, isto é, copiar

null 1 Nov 15, 2021