假设我的搜索引擎(或基于用户输入的任何其他脚本生成不同的响应)将需要20秒才能结束搜索。
用户A访问脚本
用户B比用户A晚10秒访问脚本(因此脚本尚未“回答”用户A)
会发生什么?将服务器“执行该文件的另一个实例”,因此两个用户将有他们的响应或将被搞砸的东西?
如果一个php脚本需要很长时间才能完成执行并且一个人访问它然后离开而不等待响应,那么php脚本是否仍会执行它必须做的所有事情直到它结束? (逻辑告诉我,在最后一个问题上,脚本将执行所有操作,直到它到达结尾,因为该人只是发出请求,然后等待答案来,如果它关闭仍然没有什么会阻止php脚本执行,但我仍在问,因为我想完全确定)
答案 0 :(得分:3)
两个人都有自己的脚本实例。如果修改数据,仍可能存在数据一致性方面的问题。如果HTTP是无状态协议,您不知道一个人是否离开而没有等待结果,脚本将运行到最后。
答案 1 :(得分:0)
每个用户的会话都使用线程进行处理。每件事都在队列中,没有什么会搞砸。
但在某些情况下可能会出现问题。
例如:用户要求DB中的某个字段,但另一个用户在第一个用户的线程等待或暂停时删除该字段。但它真的是后方,如果它发生了一个例外将是王位,这是我们的脚本责任来处理它。