NicolasPereira / process-big-file-php

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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 git@github.com: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

About

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


Languages

Language:PHP 100.0%