Last active
April 8, 2024 16:56
-
-
Save tarlepp/a3294808af2d606e5b22949343e199ff to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App\Command; | |
use App\Entity\DateDimension; | |
use App\Repository\DateDimensionRepository; | |
use Symfony\Component\Console\Attribute\AsCommand; | |
use Symfony\Component\Console\Command\Command; | |
use Symfony\Component\Console\Input\InputInterface; | |
use Symfony\Component\Console\Output\OutputInterface; | |
#[AsCommand( | |
name: 'foo', | |
)] | |
class FooCommand extends Command | |
{ | |
public function __construct(private readonly DateDimensionRepository $repository) | |
{ | |
parent::__construct(); | |
} | |
protected function execute(InputInterface $input, OutputInterface $output): int | |
{ | |
$batchSize = 250; | |
$count = 0; | |
$entityCount = $this->repository->countAdvanced([]); | |
$em = $this->repository->getEntityManager(); | |
for ($offset = 0; $offset < $entityCount; $offset += $batchSize) { | |
$qb = $em->createQueryBuilder(); | |
$query = $qb->select('dd.id') | |
->from(DateDimension::class, 'dd') | |
->setFirstResult($offset) | |
->setMaxResults($batchSize) | |
->getQuery(); | |
$entities = $query->getResult(); | |
foreach ($entities as $entity) { | |
$count++; | |
} | |
$entities = null; | |
//Flush after each batch | |
$em->flush(); | |
$em->clear(); | |
echo "memory usage $count: " . memory_get_usage() / 1024 / 1024 . PHP_EOL; | |
} | |
return Command::SUCCESS; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
dev@php-fpm /app (master)> console foo --no-debug --quiet | |
memory usage 250: 20.230560302734 | |
memory usage 500: 20.430168151855 | |
memory usage 750: 20.463890075684 | |
memory usage 1000: 20.489799499512 | |
memory usage 1250: 20.531639099121 | |
memory usage 1500: 20.557548522949 | |
memory usage 1750: 20.583457946777 | |
memory usage 2000: 20.610740661621 | |
memory usage 2250: 20.669273376465 | |
memory usage 2500: 20.695945739746 | |
memory usage 2750: 20.721855163574 | |
memory usage 3000: 20.747764587402 | |
memory usage 3250: 20.77367401123 | |
memory usage 3500: 20.799583435059 | |
memory usage 3750: 20.887992858887 | |
memory usage 4000: 20.916648864746 | |
memory usage 4250: 21.007804870605 | |
memory usage 4500: 21.034019470215 | |
memory usage 4750: 21.059928894043 | |
memory usage 5000: 21.085838317871 | |
memory usage 5250: 21.112968444824 | |
memory usage 5500: 21.138877868652 | |
memory usage 5750: 20.069664001465 | |
memory usage 6000: 20.095573425293 | |
memory usage 6250: 20.121482849121 | |
memory usage 6500: 20.147392272949 | |
memory usage 6750: 20.173301696777 | |
memory usage 7000: 20.199211120605 | |
memory usage 7250: 20.225120544434 | |
memory usage 7500: 20.251029968262 | |
memory usage 7750: 20.27693939209 | |
memory usage 8000: 20.30834197998 | |
memory usage 8250: 20.464744567871 | |
memory usage 8500: 20.491264343262 | |
memory usage 8750: 20.51717376709 | |
memory usage 9000: 20.543083190918 | |
memory usage 9250: 20.568992614746 | |
memory usage 9500: 20.594902038574 | |
memory usage 9750: 20.620811462402 | |
memory usage 10000: 20.64672088623 | |
memory usage 10250: 20.672630310059 | |
memory usage 10500: 20.703910827637 | |
memory usage 10750: 20.729820251465 | |
memory usage 11000: 20.755729675293 | |
memory usage 11250: 20.781639099121 | |
memory usage 11500: 20.807548522949 | |
memory usage 11750: 20.833457946777 | |
memory usage 12000: 20.859367370605 | |
memory usage 12250: 20.885276794434 | |
memory usage 12500: 20.911186218262 | |
memory usage 12750: 20.93709564209 | |
memory usage 13000: 20.963005065918 | |
memory usage 13250: 20.988914489746 | |
memory usage 13500: 21.139823913574 | |
memory usage 13750: 21.165733337402 | |
memory usage 14000: 21.19164276123 | |
memory usage 14250: 21.217552185059 | |
memory usage 14500: 21.243461608887 | |
memory usage 14750: 21.269371032715 | |
memory usage 15000: 21.295280456543 | |
memory usage 15250: 21.321189880371 | |
memory usage 15500: 21.347099304199 | |
memory usage 15750: 21.373008728027 | |
memory usage 16000: 21.41576385498 | |
memory usage 16250: 21.452659606934 | |
memory usage 16500: 21.729789733887 | |
memory usage 16750: 21.755699157715 | |
memory usage 17000: 21.781608581543 | |
memory usage 17250: 21.807518005371 | |
memory usage 17500: 21.833427429199 | |
memory usage 17750: 21.859336853027 | |
memory usage 18000: 21.885246276855 | |
memory usage 18250: 21.911155700684 | |
memory usage 18500: 21.937065124512 | |
memory usage 18750: 21.96297454834 | |
memory usage 19000: 21.988883972168 | |
memory usage 19250: 22.014793395996 | |
memory usage 19500: 22.040702819824 | |
memory usage 19750: 22.066612243652 | |
memory usage 20000: 22.09252166748 | |
memory usage 20250: 22.118431091309 | |
memory usage 20500: 22.144340515137 | |
memory usage 20750: 22.170249938965 | |
memory usage 21000: 22.196159362793 | |
memory usage 21250: 22.225975036621 | |
memory usage 21500: 22.251884460449 | |
memory usage 21750: 22.277793884277 | |
memory usage 22000: 22.303703308105 | |
memory usage 22250: 22.329612731934 | |
memory usage 22500: 22.355522155762 | |
memory usage 22750: 22.38143157959 | |
memory usage 23000: 22.407341003418 | |
memory usage 23250: 22.433250427246 | |
memory usage 23500: 22.459159851074 | |
memory usage 23750: 22.485069274902 | |
memory usage 24000: 22.51097869873 | |
memory usage 24250: 22.536888122559 | |
memory usage 24500: 22.562797546387 | |
memory usage 24750: 22.588706970215 | |
memory usage 25000: 22.614616394043 | |
memory usage 25250: 22.640525817871 | |
memory usage 25500: 22.666435241699 | |
memory usage 25750: 22.692344665527 | |
memory usage 26000: 22.718254089355 | |
memory usage 26250: 22.744163513184 | |
memory usage 26500: 22.770072937012 | |
memory usage 26750: 22.79598236084 | |
memory usage 27000: 22.821891784668 | |
memory usage 27250: 22.847801208496 | |
memory usage 27500: 22.873710632324 | |
memory usage 27750: 22.899620056152 | |
memory usage 28000: 22.92552947998 | |
memory usage 28250: 22.951438903809 | |
memory usage 28489: 22.976341247559 | |
dev@php-fpm /app (master)> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment