Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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 5.6会话+;Memcache(d)_Php_Session_Memcached_Php 5.6 - Fatal编程技术网

PHP 5.6会话+;Memcache(d)

PHP 5.6会话+;Memcache(d),php,session,memcached,php-5.6,Php,Session,Memcached,Php 5.6,我遇到了一个奇怪的问题,因为我已经将PHP从5.4升级到了5.6。我自己从来没有看到过这个错误,但是日志每天都充满了这样的信息: session_write_close():未能写入会话数据(memcached)。请验证session.save_路径的当前设置是否正确(127.0.0.1:11211) 这并不总是发生,但只适用于某些用户。这发生在三个不同的服务器上,它们在最新的Debian上安装了PHP~5.6和Memcached。我曾尝试将Memcached扩展切换到Memcache(当然是在

我遇到了一个奇怪的问题,因为我已经将PHP从5.4升级到了5.6。我自己从来没有看到过这个错误,但是日志每天都充满了这样的信息:

session_write_close():未能写入会话数据(memcached)。请验证session.save_路径的当前设置是否正确(127.0.0.1:11211)

这并不总是发生,但只适用于某些用户。这发生在三个不同的服务器上,它们在最新的Debian上安装了PHP~5.6和Memcached。我曾尝试将Memcached扩展切换到Memcache(当然是在php.ini中更改save_处理程序),但问题仍然存在。我还尝试在php.ini中禁用会话锁。这个问题肯定与PHP有关,因为我已经用Perl脚本测试了Memcached守护进程本身,并且没有出现任何连接错误

在很长一段时间内,一切都很完美,我在PHP升级之后就开始出现这个问题,所以它与memcached config或类似的东西无关。也许我错过了什么?也许5.6在其ini文件中需要一些额外的配置?我就是想不出来


现在我有点困了,我希望任何人都能给我一些建议。我可以尝试切换回5.4或5.5,但这不是一个真正的选项,我真的希望坚持使用5.6。

请确保在您的php.ini中,会话是这样的

session.save_path = "tcp://127.0.0.1:11211"
或用于unix套接字

session.save_path = "unix:///var/run/memcached.sock"

php有两个扩展,memcachememcached

memcached扩展基于libmemcache,无论如何,您都应该更喜欢它

根据我的经验,当前版本的memcache守护进程不能很好地使用memcache扩展。存储数据是可行的,但在第一次请求之后将数据写入会话时,我遇到了严重的性能问题(第一次请求全新的会话是很好而且很快的,接下来的每个请求都需要10秒钟!)。将memcache替换为memcached修复了此特定问题

警告:memcached的
会话.save_path
的语法略有不同。我不得不使用
tcp://
,否则它将无法工作

因此,对于memcached使用:

session.save_path = "127.0.0.1:11211"
session.save_path = "tcp://127.0.0.1:11211"
对于memcache使用:

session.save_path = "127.0.0.1:11211"
session.save_path = "tcp://127.0.0.1:11211"

当然,5.6是理想的,但是在一段时间内切换回5.5会是一个很大的困难吗?您可以编译自己的版本,然后在Apache配置中切换它,看看是否会遇到同样的问题。切换回主要的5.6版本将是微不足道的。