我正在为我的PHP站点编写一个新的引擎,该引擎具有数据缓存功能。现在我想知道这些脚本之间是否存在干扰。考虑以下示例:
比方说,许多用户访问了与摄影相关的网站,其中两个用户几乎在同一时间运行两个脚本。
脚本1从数据库中删除一个名为FooBar的用户及其所有照片。
脚本2显示一张编号为12345的照片(由FooBar制作)。
- (Script 1) check if user FooBar exists. Store its ID inside a variable
$id
. - (Script 2) check if a photo nr 12345 exists. Store owner ID inside a variable
$owner
. - (Script 1)
query("DELETE FROM users WHERE id= $id ");
- (Script 2)
query("SELECT name FROM users WHERE id= $owner ");
//error here - (Script 1)
query("DELETE FROM photos WHERE owner= $id ");
正如我们所看到的,脚本2检测到照片存在,但其所有者已经被删除。
问题是:PHP脚本是否按顺序处理(因此所呈现的场景是不可能的)?如果没有,在一个脚本中发送多个查询时,我该怎么做才能防止此类错误?
非常感谢。
谢谢你的回答。所呈现的场景只是一个例子,我知道这可以用更好的方式来完成。因此,当创建一个大型网站时,我必须不断意识到数据在运行时可能会发生变化。
但通过这种方式,我根本无法信任php中变量中存储的任何信息。你是如何处理这类问题的?是否在一个查询中更新或获取所有数据?