2

我前段时间制作了一个 php 搜索引擎,现在我怀疑我已经搜索过它,并在这里看到了很多关于堆栈溢出的问题,这些问题涉及对 php 脚本的多个同时访问,但仅涉及附加、修改等。 .

假设我的搜索引擎(或任何其他基于用户输入生成不同响应的脚本)需要 20 秒才能结束搜索。

用户 A 访问脚本

用户 B 比用户 A 晚 10 秒访问脚本(因此脚本尚未“回答”用户 A)

会发生什么?服务器会“执行文件的另一个实例”,所以两个用户都会有他们的回应还是会搞砸?

另外,如果一个 php 脚本需要很长时间才能完成执行并且有人访问它然后没有等待响应就离开了,那么 php 脚本是否仍然会执行它必须做的所有事情,直到它到达最后?(逻辑告诉我,在最后一个问题上,脚本将执行所有操作,直到结束,因为该人只是提出请求,然后等待答案到来,如果它关闭,仍然没有任何东西可以阻止 php 脚本执行,但我仍然在问,因为我想完全确定)

4

2 回答 2

3

两个人都有自己的脚本实例。如果数据被修改,仍然可能存在数据一致性问题。由于 HTTP 是无状态协议,你不知道一个人是否离开而不等待结果,脚本将运行到最后。

于 2011-10-19T00:52:42.027 回答
0

每个用户的会话进程都有一个线程。每件事都在排队,没有任何事情发生。

但在某些情况下可能会出现问题。

例如:用户请求数据库中的某个字段,但另一个用户在第一个用户的线程等待或挂起时删除了该字段。但它确实在后方,如果发生异常将是宝座,处理它是我们的脚本职责。

于 2011-10-19T20:43:06.397 回答