Chyba 500 bez jakéhokoliv projevu

grovik
Člen | 84
+
0
-

Narazil jsem na zajímavý problém (a už jsem se s ním setkal, ale teď mám pěkný funkční příklad).
Projev problému je cca takový to.
Pokud použiji repository (viz ukázka) tak ve FF dostanu jen bílou obrazovku bez čehokoliv. Tracy bar prostě nic. V Brave dostanu alespoň server error 500. Nikde se nic nezaloguje, ani chyba ani nic jiného. Experimentováním jsem došel k tomu, že zdrojem je jeden konkrétní repozitář.

ZDE:

<?php

declare(strict_types=1);

namespace App\Model\Orm\Repository;

use App\Model\Orm\Entity\ContractParts;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\EntityRepository;

class ContractPartsRepository extends EntityRepository
{
    public function __construct(EntityManagerInterface $em, string $entityClass = ContractParts::class)
    {
        parent::__construct($em, $em->getClassMetadata($entityClass));
    }

    public function save(ContractParts $contractParts): void
    {
        $this->getEntityManager()->persist($contractParts);
        $this->getEntityManager()->flush();
    }

    public function remove(ContractParts $contractParts): void
    {
        $this->getEntityManager()->remove($contractParts);
        $this->getEntityManager()->flush();
    }

    public function findBy(array $criteria, ?array $orderBy = null, $limit = null, $offset = null): array
    {
        return $this->findBy($criteria, $orderBy, $limit, $offset);
    }

    public function findOneBy(array $criteria, ?array $orderBy = null): ?ContractParts
    {
        return $this->findOneBy($criteria, $orderBy);
    }

    public function fetchAll(): array
    {
        return $this->fetchAll(); //testoval jsem i findAll() a podobně :-/
    }


}

Co je na něm zvláštní, že se nijak významně neliší od jiných. Metoda Save normálně funguje a ukládá data do DB. V momentě kdy použiji fetchAll() dostanu onen výsledek.
Otázkou je proč nedostanu běžnou chybu, ale prostě prázdno. To je to co mě trápí asi nejvíc.

Cache, smazaná v configu je všechno ok… to jen než to někdo napíše :D.
Jde mi především o to proč se chyba neobjeví jako běžná chyba a ve Firefoxu se projevuje prázdnem.

Editoval grovik (21. 3. 5:55)

MajklNajt
Člen | 510
+
+1
-

Predpokladám, že to robí aj findBy a findOneBy… robíš v tých metódach rekurzívne volanie…

grovik
Člen | 84
+
0
-

MajklNajt napsal(a):

Predpokladám, že to robí aj findBy a findOneBy… robíš v tých metódach rekurzívne volanie…

Jop našel jsem to a zbavil se chyby. Problém je, proč to udělá chybu bez jakéhokoliv projevu navenek v tom Firefoxu je to naprosto ujeté.
Navíc jsem zjistil a to je zajímavý výsledek, že se tam přesně opakuje na co už jsem narazil, takhle se to chová mě na dockeru, opravil jsem funguje (žádná chyba). Ale na produkční betaverzi, to háže znovu 500 a co hůř kouknu do logu a tam vznikne error 404.

UPDATE: Přišel jsem proč to blbne na produkci. Ale pořád mi není jasný ten důvod utlumení té chyby.

Marek Bartoš
Nette Blogger | 1297
+
+2
-

Zacyklilo se ti PHP. To se nezastaví, dokud nedojde paměť. Když dojde paměť, tak Tracy nemusí mít dost paměti na to, aby chybu zpracovala. Můžeš zkusit pro Tracy zarezervovat více paměti

\Tracy\Debugger::$reservedMemorySize = 2_000_000; // nutno volat před $configurator->enableTracy() / Debugger:enable()
grovik
Člen | 84
+
0
-

Marek Bartoš napsal(a):

Zacyklilo se ti PHP. To se nezastaví, dokud nedojde paměť. Když dojde paměť, tak Tracy nemusí mít dost paměti na to, aby chybu zpracovala. Můžeš zkusit pro Tracy zarezervovat více paměti

\Tracy\Debugger::$reservedMemorySize = 2_000_000; // nutno volat před $configurator->enableTracy() / Debugger:enable()

Super tohle mi fakt bylo záhadou… díky jdu zkusit to nastavení :D