gpt4 book ai didi

php - mysql_insert_id 和 mysql_pconnect

转载 作者:行者123 更新时间:2023-11-29 00:52:54 24 4
gpt4 key购买 nike

我一直在使用 mysql_pconnect 在我的 PHP 站点上建立所有数据库连接,理论上它更有效(值得商榷,我知道)。

我使用 mysql_insert_id 从最近的 INSERT 中获取 ID,我突然想到,考虑到 Web 请求的多线程特性,我不能保证另一个使用相同 pconnection 的 PHP 脚本已经进行了 DB INSERT在调用 mysql_insert_id 之前。

这是一件大事,因为我认为没有其他方法可以保证 INSERT 和 ID 检索的原子性,因为 INSERT 查询不返回 ID(或者我不知道如何获取它)。

所以如果我想要线程安全的插入和 ID 检索,基本上我永远不能使用 mysql_pconnect?

最佳答案

mysql_insert_id() 返回当前连接 session 上下文中的最后一个 ID。从而避免竞争条件问题。在 mysql_insert_id() 的 php.net 手册中有很多关于此的注释/评论。

更多信息:

这应该很容易测试:

<?php
// connection already established
mysql_query("INSERT INTO table VALUES('foo', 'bar')");
sleep(15);
echo mysql_insert_id();

然后看看你是否可以通过在 sleep 期间用请求猛击它来愚弄它......并检查 insert_id 结果。

关于php - mysql_insert_id 和 mysql_pconnect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7605237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com