有时查询时,时不时会出现如下错误:
[2020-04-23 11:41:22] request.CRITICAL:未捕获的 PHP 异常 Symfony\Component\ErrorHandler\Error\OutOfMemoryError:“错误:允许的 134217728 字节内存大小已用尽(尝试分配 17844416 字节)”在 /home /wgpavell/symfony-blog/vendor/symfony/cache/Traits/FilesystemTrait.php line 100 {"exception":"[object] (Symfony\Component\ErrorHandler\Error\OutOfMemoryError(code: 0): Error: Allowed memory size在 /home/wgpavell/symfony-blog/vendor/symfony/cache/Traits/FilesystemTrait.php:100)"} [] 中用尽了 134217728 个字节(尝试分配 17844416 个字节)
在极少数情况下,误差的变化如下:
[2020-04-24 16:56:25] request.CRITICAL:未捕获的 PHP 异常 Symfony\Component\ErrorHandler\Error\OutOfMemoryError:“错误:允许的内存大小为 134217728 字节已用尽(尝试分配 10489856 字节)”在 /home /wgpavell/symfony-blog/vendor/graze/guzzle-jsonrpc/src/functions.php 第 82 行 {"exception":"[object] (Symfony\Component\ErrorHandler\Error\OutOfMemoryError(code: 0): Error: Allowed在 /home/wgpavell/symfony-blog/vendor/graze/guzzle-jsonrpc/src/functions.php:82)"} [] 中耗尽 134217728 字节的内存大小(尝试分配 10489856 字节)
我不明白出了什么问题,但我怀疑这段代码在我的案例中:
$cache = new FilesystemAdapter();
$maps = $cache->get('zabbix_maps', function (ItemInterface $item) use ($client) {
$item->expiresAfter(3600);
$response = $client->request('map.get', [
"output" => "extend",
"selectSelements" => "extend",
]);
return $response->getResult();
});
它可以与什么连接以及如何治愈?我使用 Symfony 4.4.5 作为ZabbixClient客户端。我需要从zabbix获取关于地图的数据,但是每次请求都需要很长时间才能将它们拉出来,所以我将数据缓存了一个小时。也许我做错了?该错误很少发生,频率为每天 2-4 次。
在
php.ini
您有一个memory_limit
默认为 128 兆字节的参数。只是有时您需要比分配给一个进程更多的内存来存储数据。当然,这绝对不是您的错误。因此,该问题的解决方案完全是陈词滥调。增加此参数的值。
p.s. 使用您更改的设置创建一个单独的文件是很好的做法,然后您将其
conf.d
放在php
. 事实上,它们会覆盖默认设置。嗯,方便的是你总是知道你到底改变了什么,你可以对那里的参数进行额外的操作,并在其中寻找它们php.ini