Skip to content

Instantly share code, notes, and snippets.

@tarlepp
Last active April 8, 2024 16:56
Show Gist options
  • Save tarlepp/a3294808af2d606e5b22949343e199ff to your computer and use it in GitHub Desktop.
Save tarlepp/a3294808af2d606e5b22949343e199ff to your computer and use it in GitHub Desktop.
<?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;
}
}
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