Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-gc.maxlife和performance?_Php_Performance_Session_Garbage Collection - Fatal编程技术网

PHP-gc.maxlife和performance?

PHP-gc.maxlife和performance?,php,performance,session,garbage-collection,Php,Performance,Session,Garbage Collection,我想知道较高的gc.maxlifetime值是否会影响站点的性能?比如说2周(1209600秒) 我问这个问题的原因是因为我的一些页面需要几分钟才能加载,而以前加载速度非常快。我将该值从默认的24分钟更改为2周,这样用户的会话数据和登录将是持久的。这是大约两周前的事情,这让我相信高gc.maxlife可能是页面加载缓慢的问题。但它并不总是相同的页面 PS:我正在迁移到一个基于cookie的持久登录系统,我相信它对性能更友好 谢谢你,gc。最长生存期不应该直接影响性能,因为它所做的一切都是设置一个

我想知道较高的gc.maxlifetime值是否会影响站点的性能?比如说2周(1209600秒)

我问这个问题的原因是因为我的一些页面需要几分钟才能加载,而以前加载速度非常快。我将该值从默认的24分钟更改为2周,这样用户的会话数据和登录将是持久的。这是大约两周前的事情,这让我相信高gc.maxlife可能是页面加载缓慢的问题。但它并不总是相同的页面

PS:我正在迁移到一个基于cookie的持久登录系统,我相信它对性能更友好


谢谢你,gc。最长生存期不应该直接影响性能,因为它所做的一切都是设置一个持续时间,在这个持续时间之后,会话可以被公平地删除(尽管不能保证它什么时候会被实际删除)

可能存在一些附带的性能差异,即每当会话GC启动时,它将有更多的会话来检查是否有资格清理,因此需要更多的时间来整理所有会话。这是因为您增加了会话的最短生存期,因此在所有其他条件相同的情况下,任何时候都有比以前更多的会话正在进行


您可以做一个非常简单的检查:查看会话存储机制(默认情况下,这意味着系统临时目录中的文件),并查看当前存在多少个会话。如果是文件系统会话,那么不应该有任何明显的性能下降,除非您有10K或更多;在任何情况下,“可见性能下降”都不会上升到分钟范围内(这是一个硬盘,它的速度有多慢?)

gc.max_life
不应该直接影响性能,因为它所做的一切都是设置会话被公平删除的持续时间(尽管无法保证它最终会被删除)

可能存在一些附带的性能差异,即每当会话GC启动时,它将有更多的会话需要检查是否有资格清理,因此将需要更多的时间来对所有会话进行排序。这是因为您增加了会话的最小生存期,所以在任何时间,所有其他事情都是相同的与以前相比,现在正在进行更多的会议


您可以做一个非常简单的检查:查看会话存储机制(默认情况下,这意味着系统临时目录中的文件),并查看当前存在多少个会话。如果是文件系统会话,则不应出现任何可见的性能下降,除非您有10K或更多;在任何情况下,“可见的性能下降”永远不会上升到分钟范围内(这是一个硬盘,它能有多慢?).

我认为您不应该尝试使用gc.maxlifetime设置。一般来说,垃圾收集器是一个非常轻量级的过程。我认为您应该尝试找出页面速度慢的原因。您可以通过在某些代码集之间添加计时器来实现这一点。然后查看代码的哪部分速度慢

例如:

<?php

$start = microtime( true );
/* code block A */
$blockA = microtime( true ) - $start;

$start = microtime( true );
/* code block B */
$blockB = microtime( true ) - $start;


// etc.


/**
 * At the end of your script, you can use the times and 
 * print them to the screen, or log them to a file.
 */
echo '<pre>' . PHP_EOL;
echo 'Block A took '. round( $blockA, 2) .' seconds ' . PHP_EOL;
echo 'Block B took '. round( $blockB, 2) .' seconds ' . PHP_EOL;
echo '</pre>' . PHP_EOL;
?>


祝你好运找到慢的部分。提示:如果有数据库查询,请仔细查看。

我认为你不应该尝试使用gc.maxlife设置。一般来说,垃圾收集器是一个非常轻量级的过程。我认为你应该试着找出页面慢的原因。你可以通过在特定的co集之间添加计时器来做到这一点然后看看你的代码哪一部分是慢的

例如:

<?php

$start = microtime( true );
/* code block A */
$blockA = microtime( true ) - $start;

$start = microtime( true );
/* code block B */
$blockB = microtime( true ) - $start;


// etc.


/**
 * At the end of your script, you can use the times and 
 * print them to the screen, or log them to a file.
 */
echo '<pre>' . PHP_EOL;
echo 'Block A took '. round( $blockA, 2) .' seconds ' . PHP_EOL;
echo 'Block B took '. round( $blockB, 2) .' seconds ' . PHP_EOL;
echo '</pre>' . PHP_EOL;
?>


祝你好运找到慢的部分。提示:如果有数据库查询,请仔细查看。

首先,没有选项“gc.maxlife”-你的意思是“session.gc\u maxlife”;)

选项“session.gc_maxlifetime”定义了垃圾收集(gc)进程不会删除会话数据的时间。gc进程的启动频率与“session.gc_除数”和“session.gc_概率”定义的频率相同

如果您有问题,您应该查看会话数据将存储在哪里(会话保存处理程序)。然后您应该优化该进程或禁用该进程并自行清理数据(cron)

如果使用默认配置,PHP将会话数据存储在本地硬盘上,这通常是瓶颈


将“session.gc\u maxlifest”的值增加太多会导致安全问题,并简单地拖延您的问题。

首先,没有选项“gc.maxlifest”-您的意思是“session.gc\u maxlifest”;)

选项“session.gc_maxlifetime”定义了垃圾收集(gc)进程不会删除会话数据的时间。gc进程的启动频率与“session.gc_除数”和“session.gc_概率”定义的频率相同

如果您有问题,您应该查看会话数据将存储在哪里(会话保存处理程序)。然后您应该优化该进程或禁用该进程并自行清理数据(cron)

如果使用默认配置,PHP将会话数据存储在本地硬盘上,这通常是瓶颈


增加“session.gc\u maxlifetime”的值“如此多的设置会导致安全问题,并会拖延您的问题。

此设置导致页面下载的可能性很低。你的站点是否有db交互?它可能是关于db。另一方面,当您降低gc_生存期时,页面加载速度会加快?是的,它有db。查询的表大约有13000行,用户使用LIMIT子句一次最多检索10行。我认为,该表是使用联接正确构造的。thanksIt不太可能此设置使您的页面加载下降。你的站点是否有db交互?它可能是关于db。另一方面,当您降低gc_生存期时,页面加载速度会加快?是的,它有db。被查询的表大约有13000行,用户检索这些行