Chyba 500 bez jakéhokoliv projevu
- grovik
- Člen | 87
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)
- grovik
- Člen | 87
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 | 1298
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 | 87
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