让 PHP 对会话而不是平面文件使用 MySQL 的简单方法?
Easy way to have PHP use MySQL for sessions rather than flat file?
有谁知道让 PHP 使用 MySQL 作为会话数据而不是当前平面文件的简单方法?
我研究过 zebra,但我认为它不适用于我的解决方案。
目前我在脚本中使用 session_start();
和 $foo = $_SESSION['bar'];
。
我有很多 1000 个 .php 文件都使用这种方法,所以不可能将它们全部更改为使用不同的方法。
Zebra 看起来可以解决这个问题,但仍然需要修改 所有 .php 调用 session_start();
的文件。这不是很实用。
我希望 PHP 中有某种模块或设置只是说,"Store sessions in this table in this database, not in flat files." 然后不需要修改 .php 文件,我可以扩展正确。
这可能吗?
或者我是否需要满足于这样一个事实,即由于 PHP 中缺乏支持,我不必手动编辑 1000 个文件?
老实说,我原以为在今天多云的互联网中 PHP 几乎可以选择内置这样的东西。但是,唉,我的 Google 技能让我失望了。
我不确定你为什么需要这个。这可能会在以后证明是维护开销。
你可能想看看session_set_save_handler
编辑:我找到了一个很好的教程here
如果您想在不更改所有 php 文件的情况下更改会话的存储方式,您可以通过使用 php.ini session.save_handler(即使我宁愿使用 session_set_save_handler... 通过代码来完成。对于可伸缩性,我建议使用 Memcached 而不是 mysql。
即:
session.save_handler = memcached
session.save_path = "127.0.0.1:11211"
如果您在服务器之间共享会话,显然将 IP 从本地更改为其他 IP。
有谁知道让 PHP 使用 MySQL 作为会话数据而不是当前平面文件的简单方法?
我研究过 zebra,但我认为它不适用于我的解决方案。
目前我在脚本中使用 session_start();
和 $foo = $_SESSION['bar'];
。
我有很多 1000 个 .php 文件都使用这种方法,所以不可能将它们全部更改为使用不同的方法。
Zebra 看起来可以解决这个问题,但仍然需要修改 所有 .php 调用 session_start();
的文件。这不是很实用。
我希望 PHP 中有某种模块或设置只是说,"Store sessions in this table in this database, not in flat files." 然后不需要修改 .php 文件,我可以扩展正确。
这可能吗?
或者我是否需要满足于这样一个事实,即由于 PHP 中缺乏支持,我不必手动编辑 1000 个文件?
老实说,我原以为在今天多云的互联网中 PHP 几乎可以选择内置这样的东西。但是,唉,我的 Google 技能让我失望了。
我不确定你为什么需要这个。这可能会在以后证明是维护开销。
你可能想看看session_set_save_handler
编辑:我找到了一个很好的教程here
如果您想在不更改所有 php 文件的情况下更改会话的存储方式,您可以通过使用 php.ini session.save_handler(即使我宁愿使用 session_set_save_handler... 通过代码来完成。对于可伸缩性,我建议使用 Memcached 而不是 mysql。 即:
session.save_handler = memcached
session.save_path = "127.0.0.1:11211"
如果您在服务器之间共享会话,显然将 IP 从本地更改为其他 IP。