`
月影无痕
  • 浏览: 1009582 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

php APC 造成的session无法保存bug及解决方法

阅读更多

APC php 脚本的加速效果是明显的,基本可以将 php-fpm 服务器负载能力提高到 2 倍,所以在生产环境中,需要尽可能使用 APC 来加速 php 脚本。

 

这是我通过web bench 压力测试得出的结论,而在生产环境中,使用 APC 之后,脚本的执行速度确实有提高 (可能达到10-20%

 

生产环境中使用 session_set_save_handler session保存到 MySQL 内存表中,并安装了 APC 扩展,就发现无法保存 session ,后经过反复排查是因为 APC 引起,从网上找到的原因分析:

 

写道
一般的环境Session 是静态编译进 PHP 的 , 所以 Session 模块一定先于动态编译进 PHP 的 APC 被载入 , 也就是说 , 在请求关闭时期 , APC 的请求关闭函数 , 一定会先于 Session 的请求关闭函数被调用 .

所以, 当 Session 的请求关闭函数调用的时候 , 执行环境的 Class Table 已经为空 , 当然也就会抛出类找不到的 fatalerror 了。
 

 

--实质上数据库类的实例已经被销毁,引发了无法看到的错误。

 

 

对此解决办法非常简单:

php 程序执最后,手工调用 session_write_close();

 

或在register_shutdown_function 定义的函数中调用也可。

 

但是如果使用php 默认的文件存储 session 机制,则不存在此问题。

 

 

 

 

分享到:
评论

相关推荐

    PHP实例开发源码——PHP FexBook v1.0 Beta.zip

    7. **表单处理**:表单提交和验证是Web应用中的常见任务,源码中可能包含多种表单处理方法,如使用filter_var()进行输入验证,以及错误处理机制。 8. **AJAX异步通信**:为了提升用户体验,FexBook可能利用...

    基于PHP的优优问答系统-微论坛v1.0.0源码.zip

    4. **session与cookie**:为了保持用户登录状态,系统会使用session或cookie来存储用户信息。理解这两种技术的工作原理和安全性,以及如何在PHP中正确使用它们,对于构建安全的用户认证至关重要。 5. **模板引擎**...

    PHP实例开发源码—php辰木社区系统sns.zip

    13. **单元测试**:社区系统的复杂性可能需要使用PHPUnit等工具进行单元测试,确保代码质量并减少潜在的bug。 通过对【PHP实例开发源码—php辰木社区系统sns.zip】的分析,我们可以学习到PHP在社区系统开发中的各种...

    PHP项目开发实录-代码

    同时,了解如何正确设置session和cookie也能提升应用的安全性。 6. 性能优化:对于大型项目,性能优化是必要的。可以通过缓存技术(如Memcached或Redis)、减少数据库查询、使用opcode缓存(如APC或OPcache)、优化...

    MyQEE开源PHP多项目及模块化开发框架 v3.0 RC2.zip

    `Cache`, `HttpClient`, `Session`, `Storage`, `Upload` 等支持多驱动,可以适应不同环境的需求,其中数据库支持 `MySQL`, `MySQLI`, `Mongo`, `SQLite`, `Postgre`,缓存支持 `Memcache`, `File`, `Redis`, `Apc`...

    php手机管理

    10. **性能优化**:使用缓存技术如opcode缓存(如APC或OPcache),减少不必要的数据库查询,优化图片资源等,提升网站加载速度。 通过下载和分析这个项目,你可以深入了解PHP在移动环境下的应用,学习如何构建和...

    PHP实例开发源码—RGCMS睿谷信息管理系统build20210405.zip

    "build20210405"表明这是该系统在2021年4月5日的一个构建版本,通常包含了当时的最新功能和修复的bug。 【描述】中同样提到了"PHP实例开发源码—RGCMS睿谷信息管理系统build20210405.zip",说明这个压缩包包含的是...

    基于PHP的仿蘑菇街.美丽说.简单的商城网站源码.zip

    11. **性能优化**:包括缓存策略(如APC、Memcached、Redis)、页面静态化、数据库索引优化等,提升网站加载速度和响应效率。 12. **后台管理系统**:提供给管理员管理商品、用户、订单、评论等功能的界面,一般...

    PHP商城系统 V2.0.5 beta 2.rar

    修复 后台商品规格无法保存的问题 修复 编辑器内容无法出现的问题 修复 全站预付款统计 分页导致的问题 修复 支付宝追加配送费用的问题(多计算了一份配送费用) 修复 FLASH上传 选择要上传的文件后 上传进度条慢...

    Bug-e-Code_Blog:我的个性化博客

    3. **路由**:路由系统是博客系统的重要组成部分,它解析URL并调用相应的控制器方法来处理请求。PHP框架如Laravel、Symfony提供了内置的路由机制,允许开发者定义清晰、可读性强的URL模式。 4. **模板引擎**:为了...

    NelgaraPtyLtd:PHP网站

    项目可能包含单元测试和集成测试,利用PHPUnit等工具确保代码质量,预防bug。 14. **持续集成/持续部署(CI/CD)** Jenkins、Travis CI或GitHub Actions等工具可以自动化构建、测试和部署过程,确保快速、可靠的...

    PHP

    为了提高性能,可以使用OPcache、APC等缓存机制,以及优化代码结构和数据库查询。 10. **PHP与服务器配置** PHP运行在Web服务器上,如Apache或Nginx。通过配置php.ini文件,可以调整PHP的运行环境,例如内存限制...

    Portfolio

    10. **性能优化**:学习缓存策略(如APC或Redis),减少数据库查询,优化图像大小,以及使用CDN(内容分发网络)提升加载速度。 11. **版本控制**:使用Git进行版本控制,协同开发,回滚更改,确保代码库的整洁和...

    jTrain:一个琐事培训网站,使用来自jArchive培训网站的线索和答案

    1. **Session和Cookie**:PHP的session和cookie功能可能用于用户登录状态的管理,确保用户在浏览过程中的身份安全。 2. **权限控制**:可能使用了某种机制,如角色基础访问控制(RBAC),来限制不同用户对特定内容...

Global site tag (gtag.js) - Google Analytics