在php中,当服务器处理页面时用户转到另一个站点时发生的情况


in php, what happens when user goes to another site while server processing page?

如果用户发布到服务器,它开始处理,在此过程中不向用户发送任何内容(可能需要几秒钟,例如,通过外部服务发送邮件),用户在完成前转到另一个站点或页面

是否通知服务器?

服务器什么时候放弃?

服务器是否尝试完成处理?

是否有任何方法使一个函数在PHP"原子",以便,一旦开始,它是保证完成?

用户客户端浏览器的默认和正确行为是它应该通知页面加载已取消-原因无关紧要-用户要么按下后退按钮,停止按钮,点击另一个链接或只是关闭浏览器。

默认情况下,PHP服务器接收到此通知并退出处理页面。这取决于PHP .ini指令ignore_user_abort的设置-参见这个PHP文档页面。

服务器根据ignore_user_abort指令的设置进行操作。如果它被设置为false(默认),那么它只是停止处理请求。如果设置为true,则完成请求,因为它不会收到任何关于用户中止的通知。

不建议在服务器范围内运行ignore_user_abort = true,所以我不建议你直接把它放在php.ini文件中。但你可以把这段代码放在脚本的开头这对你来说是至关重要的,并且总是在开始时完成:

ini_set('ignore_user_abort', true);