我的项目有问题,我想使用Monolog来编写日志而我无法做到。 所以,我创建了一个服务:
services:
my_logger:
class: Monolog\Logger
arguments: [Debug]
calls:
- [pushHandler, [@my_log_handler]]
my_log_handler:
class: Monolog\Handler\StreamHandler
arguments: [/home/vagrant/Workspace/symfony/app/logs/test.log, 100]
我的控制器:
$em = $this->getDoctrine()->getManager();
$categories = $em->getRepository('EnsJobeetBundle:Category')->getWithJobs();
如果我写:
$logger = $this->get('my_logger');
$logger->info('Test log');
日志插入test.log
如果我写:
$logger = $this->get('my_logger');
$logger->info(print_r($categories,true));
日志无法写入。我收到错误500。 请帮我。 Thx提前!!! 错误:
2015/03/05 12:58:48 [error] 4698#0: *76 FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 532676608 bytes)
PHP message: PHP 8. print_r() /home/vagrant/Workspace/symfony/src/Ens /JobeetBundle/Controller/JobController.php:34" while reading response header from upstream, client: 10.0.2.2, server: symfony.md, request: "GET
/job/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "symfony.dev:8000"
答案 0 :(得分:2)
您尝试处理阵列时内存不足。这可能有很多原因,也许它太大了,也许它有递归方面等等。
使用它时的一个好方法是只打印键。您将看到更少的数据,但您将不太可能超过您的内存限制。当您查看阵列时,可以在查看按键后打印其中的特定部分。试试这个:
$logger = $this->get('my_logger');
$logger->info(print_r(array_keys($categories),true));
你的另一种选择,如果你真的需要看到整个数组,它会增加你在php.ini中的内存限制。寻找这样的一行来改变它们:
memory_limit = 128MB