我的理解是,当收到请求时,Apache服务器将分叉一个新进程并调用相应的php脚本/文件。
当php脚本启动会话时,在这个由Apache分叉的新进程中,会发生什么情况已经过期,或者用户是通过关闭浏览器来结束它的?在我使用的错误或注销重定向之后有一个exit();
调用,但我不确定它在服务器/操作系统级别的作用。
Apache会杀死进程吗? apache和php之间的通信如何工作?
答案 0 :(得分:2)
我的理解是,当收到请求时,Apache服务器将分叉一个新进程并调用相应的php脚本/文件。
这只是PHP-CGI配置的情况,这不是典型的。大多数部署都使用mod_php SAPI,它在Apache进程中运行PHP脚本。
当php脚本启动会话时,在这个由Apache分叉的新进程中,会发生什么情况已经过期,或者用户通过关闭浏览器来结束它?
没有
在PHP-CGI配置中,只要脚本完成生成响应,该进程就会退出。在mod_php配置中,Apache进程返回以在脚本完成时侦听新请求。
会话的生命周期与任何特定流程无关。请记住,会话作为文件存储在系统的临时目录中 - PHP会定期检查此目录中是否已过期的会话,并在适当时删除它们。
关闭浏览器不从服务器的临时目录中删除会话。它可能会导致您的浏览器丢弃与会话相关的cookie,导致会话停止使用,但服务器不会收到通知。