我知道有很多类似的问题和解决方案可以解决此错误,但我已经尝试了很多方法,但没有任何效果。
基本上,我有此错误:PHP致命错误:内存不足(已分配6132072448)(试图分配32768字节)。
我以前没有问题,我在运行的代码中看不到是什么会导致问题的。
我正在使用symfony / doctrine处理我的数据库并处理GET / POST。一些API路由有效,我接收到数据,但这是因为它是一个很小的json输出,但是当它稍大一些时,我会得到一个错误500。
我尝试将内存限制增加到128、256,以达到可笑的数量并增加到-1。我的phpinfo文件告诉我,考虑了更新,但是错误不断发生。
编辑:
-我尝试删除了foreach循环,但没有任何变化。
-我更改了etc / php / x.x / apache2中的每个php.ini(5.6、7.0、7.1),以防万一(我使用的是7.2)。
-我尝试删除'jms_serializer'并使用简单的json_encode,仍然没有任何变化。
这是我在localhost中得到的响应:(1012 B,在800到1000毫秒内)对于“项目”
[
{
id: "fdgdf",
name: "gdfg",
description: "dfgdsfdgsdgsd",
project_date_start: "2022-01-01 00:00:00",
project_date_end: "2019-05-21 12:19:27"
},
{
id: "test1",
name: "test1",
description: "desc",
project_date_start: "2020-01-30 00:00:00",
project_date_end: "2020-01-30 00:00:00"
},
{
id: "test",
name: "test Project",
description: "Test",
project_date_start: "2021-02-02 00:00:00",
project_date_end: "2022-02-02 00:00:00"
}
]
正如我说的那样,我的某些根源正在工作,因为数据非常小。因此,我尝试将更多数据添加到此根目录以测试是否出现相同的错误,但没有。 这两个表/根之间的唯一区别是“项目”有2个表链接为“ OneToMany”。所以我猜想symfony /准则必须遍历项目的每个链接表,然后继续下去。但是,当我创建查询时,我只选择“项目”字段,而不连接任何其他表。
编辑结束
以下是我用于检索数据的路线和代码的示例。响应也很小(976B),但仍然会导致错误。
/**
* @Route("/api/project", name="api_project")
*/
public function project(Request $request)
{
$projectRepo = $this->getDoctrine()->getRepository(Project::class);
$project = $projectRepo->findAllProject();
foreach($project as &$p) {
$p['project_date_end'] = $p['project_date_end']->format('Y-m-d H:i:s');
$p['project_date_start'] = $p['project_date_start']->format('Y-m-d H:i:s');
}
$data = $this->get('jms_serializer')->serialize($project, 'json');
$response = new Response($data);
$response->headers->set('Content-Type', 'application/json');
$response->headers->set('Access-Control-Allow-Origin', '*');
return $response;
}
public function findAllProject()
{
return $this->createQueryBuilder('p')
->select('p.id', 'p.name', 'p.description', 'p.project_date_start', 'p.project_date_end')
->getQuery()
->getResult()
;
}