PHP:所有脚本中的ignore_user_abort(true)
我有一个在服务器端使用
PHP的网站.
用户访问页面,PHP进行一些计算,将数据写入MySQL数据库等. 想象一下,用户访问PHP为用户创建帐户的页面.创建包括两部分:将注册数据插入“用户”表,并将此帐户的设置插入表“设置”.这是两个必须一个接一个地执行的SQL查询.如果用户在第一次查询后退出页面,则“设置”中不会插入任何值. 我怎么能避免这个问题?我想只需使用ignore_user_abort(true),对吗? 那么在每个PHP脚本的顶部调用ignore_user_abort(true)是不是很有用?我不知道它应该导致问题的任何情况.
对于您的具体示例,使用数据库事务(如Ignacio所述)将是更合适的方法.
在其他情况下,您可能希望确保用户不能提前中止,但与数据库无关.例如,如果更新数据库然后发送邮件,则不希望用户在邮件发出之前能够停止该过程.在这种情况下,ignore_user_abort是合适的. 但是,请注意,由于客户端中断连接而导致的管道损坏不会立即停止执行,只是在您下次尝试写入脚本输出时.这可以通过调用echo或print,或者甚至只是通过关闭PHP标记并在打开一个空格之前插入一些空格(…?><?php ...).因此,如果您在页面顶部拥有脚本的所有“操作”部分,那么在尝试编写任何页面内容之前,您不必担心管道损坏会影响应用程序逻辑. 当然,无论如何,你应该以这种方式将动作逻辑与页面内容分开. 从http://php.net/manual/en/function.ignore-user-abort.php#refsect1-function.ignore-user-abort-notes起
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |