首页 > 解决方案 > 使用 PHP/ProcessWire CMS 和 session.save_handler = redis/memcached 的并行文件上传问题

问题描述

当我将 session 与 save_handler redis 或 memcached 一起使用时,我遇到了 PHP 问题。

我使用 ProcessWire CMS 并且两个会话处理程序方法通常都可以正常工作,但我发现了一个奇怪的行为:我无法并行上传多个图像。至少完成的图像将覆盖数据库中所有其他上传的图像。

从那时起,没有人真正使用 ProcessWire 和这个会话处理程序,我猜这不是 ProcessWire 本身的错误。也许这是 phpredis、memcached 扩展或 PHP 本身的错误,或者我有一些错误的配置。

我在 php.ini 中使用了以下内容:

对于 Redis:

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"

对于内存缓存:

session.save_handler = memcached
session.save_path = "127.0.0.1:11211"

它可能取决于会话锁定之类的东西吗?停用/激活它对我没有帮助。

processwire github repo 中的问题: https ://github.com/processwire/processwire-issues/issues/798

标签: phpphpredisprocesswire

解决方案


我找到了解决方案。我在我的 php.ini 中添加了以下内容

redis.session.locking_enabled = 1
redis.session.lock_expire = 60
redis.session.lock_retries = -1

推荐阅读