在这里,我们将给大家分享关于php–Symfony2:如何将查询持续时间记录到logs/dev.log中的知识,让您更了解php如何记录日志的本质,同时也会涉及到如何更有效地Linux下部署Symfo
在这里,我们将给大家分享关于php – Symfony2:如何将查询持续时间记录到logs / dev.log中的知识,让您更了解php如何记录日志的本质,同时也会涉及到如何更有效地Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs、Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs_PHP教程、php – Autoloader预期类Symfony2、php – Symfony / Doctrine Dateinterval(持续时间)如何将其存储在数据库中的内容。
本文目录一览:- php – Symfony2:如何将查询持续时间记录到logs / dev.log中(php如何记录日志)
- Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
- Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs_PHP教程
- php – Autoloader预期类Symfony2
- php – Symfony / Doctrine Dateinterval(持续时间)如何将其存储在数据库中
php – Symfony2:如何将查询持续时间记录到logs / dev.log中(php如何记录日志)
在dev env中,Symfony2默认将SQL查询记录到dev.log.为了进行性能分析和调试,我还想记录查询的执行时间.这必须是可能的,因为“真实页面”的分析器显示每个查询旁边的执行时间.我认为正确的类是DBalLogger一个秒表实例,但我不知道我是如何以及在哪里正确配置这些服务(monolog?doctrine?dbal.connection?samples say我们必须使用setsqlLogger但我在哪里可以在我的config_dev中这样做.阳明海运?)
解决方法:
您可以注入monolog服务,然后手动添加时间参考
$logger = $this->get('logger');
$timestart = microtime(true);
// Your query goes here
$timeend = microtime(true);
$logger->info("Query time: " . (($timeend - $timestart) * 1000) . "s");
Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
linux下部署symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
在linux下部署完symfony2,可能在访问的时候会报app/logs或者app/cache目录没有写权限的错误。在linux下,如果我们在命令行登陆的用户和web应用服务器(apache、nginx等)的用户不一样的时候,
可以使用下面四个方法来解决这个问题。
1、在支持chmod +a 的系统下使用ACL
很多版本的linux系统都支持chmod +a命令,所以我们优先使用这个命令。找出web应用服务器的用户名赋值到变量HTTPDUSER上。
<span>1</span> <span>$ rm -rf app/cache/* </span><span>2</span> <span>$ rm -rf app/logs/* </span><span>3</span> <span>4</span> $ HTTPDUSER=`ps aux | grep -E ''<span>[</span><span>a</span><span>]</span>pache|<span>[</span><span>h</span><span>]</span>ttpd|<span>[</span><span>_</span><span>]</span>www|<span>[</span><span>w</span><span>]</span>ww-data|<span>[</span><span>n</span><span>]</span>ginx'' | grep -v root | head -1<span> | cut -d\ -f1` </span><span>5</span> $ sudo chmod +a "$HTTPDUSER allow delete,write,append,file_inherit,directory_inherit"<span> app/cache app/logs </span><span>6</span> $ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
第四行命令是:找出web应用服务器的用户名赋值给变量HTTPDUSER;第五行命令是:赋予web应用服务器对app/logs或者app/cache目录读、写、创建目录等权限;第六行命令是:赋予命令行登陆用户对app/logs或者app/cache目录读、写、创建目录等权限。
2、如果系统不支持chmod +a ,那么就使用setfacl命令来设置ACL
首先要确定目录所在分区支持ACL和已经安装setfacl命令。
<span>1</span> $ HTTPDUSER=`ps aux | grep -E ''<span>[</span><span>a</span><span>]</span>pache|<span>[</span><span>h</span><span>]</span>ttpd|<span>[</span><span>_</span><span>]</span>www|<span>[</span><span>w</span><span>]</span>ww-data|<span>[</span><span>n</span><span>]</span>ginx'' | grep -v root | head -1<span> | cut -d\ -f1` </span><span>2</span> $ sudo setfacl -R -m u:"$HTTPDUSER"<span>:rwX -m u:`whoami`:rwX app/cache app/logs </span><span>3</span> $ sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs
如果不起作用,在第二、三行命令添加 -n 选项。
3、不使用ACL
如果不是使用ACL,还可以改变umask,使这两个目录的用户组有创建和修改文件的权限(775,并且web应用服务器和命令行用户在同一个组)或者所有用户都拥有创建和修改文件的权限(777),但是这两组权限都是不安全的,给予的权限过高。把下面的代码添加到app/console, web/app.php 和 web/app_dev.php 文件的首行。
<span>1</span> umask(<span>0002</span>); <span>//</span><span> 生成的目录(app/cache和app/logs)权限为0775 </span><span>2</span> <span>3</span> <span>//</span><span> 或者</span> <span>4</span> <span>5</span> umask(<span>0000</span>); <span>//</span><span> 生成的目录(app/cache和app/logs)权限为0777</span>
注:php的umask命令是非线程安全的。
4、命令行登陆的用户和web应用服务器的用户为同一个用户。
tomcat中的xml文件该怎配置
初学的话就配置个端口号 跟用户权限就可以了~ 其他不用管
Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs_PHP教程
linux下部署symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
在linux下部署完symfony2,可能在访问的时候会报app/logs或者app/cache目录没有写权限的错误。在linux下,如果我们在命令行登陆的用户和web应用服务器(apache、nginx等)的用户不一样的时候,
可以使用下面四个方法来解决这个问题。
1、在支持chmod +a 的系统下使用ACL
很多版本的linux系统都支持chmod +a命令,所以我们优先使用这个命令。找出web应用服务器的用户名赋值到变量HTTPDUSER上。
立即学习“PHP免费学习笔记(深入)”;
<span>1</span> <span>$ rm -rf app/cache/* </span><span>2</span> <span>$ rm -rf app/logs/* </span><span>3</span> <span>4</span> $ HTTPDUSER=`ps aux | grep -E ''<span>[</span><span>a</span><span>]</span>pache|<span>[</span><span>h</span><span>]</span>ttpd|<span>[</span><span>_</span><span>]</span>www|<span>[</span><span>w</span><span>]</span>ww-data|<span>[</span><span>n</span><span>]</span>ginx'' | grep -v root | head -1<span> | cut -d\ -f1` </span><span>5</span> $ sudo chmod +a "$HTTPDUSER allow delete,write,append,file_inherit,directory_inherit"<span> app/cache app/logs </span><span>6</span> $ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
第四行命令是:找出web应用服务器的用户名赋值给变量HTTPDUSER;第五行命令是:赋予web应用服务器对app/logs或者app/cache目录读、写、创建目录等权限;第六行命令是:赋予命令行登陆用户对app/logs或者app/cache目录读、写、创建目录等权限。
2、如果系统不支持chmod +a ,那么就使用setfacl命令来设置ACL
首先要确定目录所在分区支持ACL和已经安装setfacl命令。
<span>1</span> $ HTTPDUSER=`ps aux | grep -E ''<span>[</span><span>a</span><span>]</span>pache|<span>[</span><span>h</span><span>]</span>ttpd|<span>[</span><span>_</span><span>]</span>www|<span>[</span><span>w</span><span>]</span>ww-data|<span>[</span><span>n</span><span>]</span>ginx'' | grep -v root | head -1<span> | cut -d\ -f1` </span><span>2</span> $ sudo setfacl -R -m u:"$HTTPDUSER"<span>:rwX -m u:`whoami`:rwX app/cache app/logs </span><span>3</span> $ sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs
如果不起作用,在第二、三行命令添加 -n 选项。
3、不使用ACL
如果不是使用ACL,还可以改变umask,使这两个目录的用户组有创建和修改文件的权限(775,并且web应用服务器和命令行用户在同一个组)或者所有用户都拥有创建和修改文件的权限(777),但是这两组权限都是不安全的,给予的权限过高。把下面的代码添加到app/console, web/app.php 和 web/app_dev.php 文件的首行。
<span>1</span> umask(<span>0002</span>); <span>//</span><span> 生成的目录(app/cache和app/logs)权限为0775 </span><span>2</span> <span>3</span> <span>//</span><span> 或者</span> <span>4</span> <span>5</span> umask(<span>0000</span>); <span>//</span><span> 生成的目录(app/cache和app/logs)权限为0777</span>
注:php的umask命令是非线程安全的。
4、命令行登陆的用户和web应用服务器的用户为同一个用户。
tomcat中的xml文件该怎配置
初学的话就配置个端口号 跟用户权限就可以了~ 其他不用管
php – Autoloader预期类Symfony2
RuntimeException: The autoloader expected class "Sensio\Bundle\ FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter" to be defined in file "/home/na/auth/vendor/sensio/framework-extra-bundle/ Sensio/Bundle/FrameworkExtraBundle/Request/ParamConverter/ DateTimeParamConverter.PHP". The file was found but the class was not in it,the class name or namespace probably has a typo.
这个引用的文件如下所示:
<?PHP /* * This file is part of the Symfony framework. * * (c) Fabien Potencier <fabien@symfony.com> * * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter; use Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use DateTime; /** * Convert DateTime instances from request attribute variable. * * @author Benjamin Eberlei <kontakt@beberlei.de> */ class DateTimeParamConverter implements ParamConverterInterface { /** * @{inheritdoc} * * @throws NotFoundHttpException When invalid date given */ public function apply(Request $request,ConfigurationInterface $configuration) { $param = $configuration->getName(); if (!$request->attributes->has($param)) { return false; } $options = $configuration->getoptions(); $value = $request->attributes->get($param); $date = isset($options['format']) ? DateTime::createFromFormat($options['format'],$value) : new DateTime($value); if (!$date) { throw new NotFoundHttpException('Invalid date given.'); } $request->attributes->set($param,$date); return true; } /** * @{inheritdoc} */ public function supports(ConfigurationInterface $configuration) { if (null === $configuration->getClass()) { return false; } return "DateTime" === $configuration->getClass(); } }
无论如何,一些可能有用的细节是我最近安装了Doctrine并运行命令……
2028 PHP app/console doctrine:schema:create 2029 PHP app/console doctrine:generate:entities Auth
在那些命令之后,symfony停止了工作.我不知道这是不是一些奇怪的错误.如果您需要更多信息,我可以发帖.谢谢你的帮助.
php – Symfony / Doctrine Dateinterval(持续时间)如何将其存储在数据库中
A massage that takes 1 hour and 15 minutes
然后我为这项服务预订系统.我在预订时需要计算结束日期时间.
所以我在我的数据库中有一个“开始”的日期时间,我不知道如何存储持续时间.因此,在预订后,我可以很容易地说,这将在其他一些日期时间结束.
我希望我很清楚.
问题是如何在数据库中存储持续时间以及如何用它来增加开始日期,所以我对时区等没有任何问题.
感谢帮助!
解决方法
$reservation = new Reservation(); // Your entity object $startDate = new \DateTime('Now'); $endDate = $startDate; $endDate->modify('+'.4500.' seconds'); // Update the end time with the duration of the service $reservation->setStartDate($startDate); $reservation->setEndDate($endDate); // Save the reservation $em = $this->getDoctrine()->getManager(); $em->persist($reservation); $em->flush();
编辑1:
要回答您的时区问题,最容易(我认为)是使用时间戳!在显示时,时间戳将转换为时区日期.从日期时间获取时间戳时,它是相同的,它是根据机器的时区计算的.所以时间戳在时区之间共享^^
这里的片段编辑:
// ... // Save timestamp instead of datetime $reservation->setStartTimestamp($startDate->getTimestamp()); $reservation->setEndTimestamp($endDate->getTimestamp()); // ...
编辑2:
要回答您的评论,如果您更改了持续时间,只需将持续时间保存在数据库中即可.
// First save $reservation->setDuration(4000); // seconds
编辑持续时间时:
// Duration of a reservation change // <- Load the $reservation to edit $date = new \DateTime(); $date->setTimestamp($reservation->getStartTimestamp()); // Got start date $reservation->setDuration($reservation->getDuration() + 2000); // For example,duration is increased of 2000 second $endDate = $date; $endDate->modify('+'.$reservation->getDuration().' seconds'); // Use start date and recalculate new end date $reservation->setEndTimestamp($endDate->getTimestamp()); // <- Then update $reservation with a persist
关于php – Symfony2:如何将查询持续时间记录到logs / dev.log中和php如何记录日志的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs、Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs_PHP教程、php – Autoloader预期类Symfony2、php – Symfony / Doctrine Dateinterval(持续时间)如何将其存储在数据库中的相关知识,请在本站寻找。
本文标签: