【问题标题】:PHP Insert into database without waiting database responsePHP插入数据库而不等待数据库响应
【发布时间】:2015-12-05 05:20:39
【问题描述】:

我必须从我的 php 代码向数据库中插入一些值。但是脚本执行的时间非常昂贵,所以我应该尽快完成我的脚本。所以我只需要“说”我的脚本来将值插入数据库,我不在乎需要多少时间来执行此操作。看起来我可以使用 cURL 向一些 *.php 文件发送命令,该文件将进行插入,但这是最好和有效的方式吗?

【问题讨论】:

  • 使用作业队列和工人。例如。首先调查 Gearman 或类似系统。

标签: php database curl sybase sap-iq


【解决方案1】:

您的问题听起来有点像您将尝试使用 IQ 进行 OLTP。不是 IQ 的设计目标,但有一种方法可能适合您:

由于 IQ 是一个列存储,在写入/更新语句时具有大量 I/O(在 INSERTS(UPDATES) 上很慢,因此他们在 IQ16 中引入了称为 RLV 的附加行级版本控制功能。(请记住,一个列存储在更新字段后更新完整列)这允许您更改单行而无需等待 IQ 写回完整列。在超时或多次更改后,IQ 自动将更改同步回列存储。在 SELECT 语句中,列存储结果与存储在 RLV 中的更改合并。因此,除了一些新的错误代码之外,它对您的应用程序是完全透明的;) 即使它正在工作,也有人说:这是一种(很酷)的解决方法,因此它不会使 IQ 进入您的 OLTP 数据库——IQ 保留报告问题所需的 OLAP 数据库——但它可以帮助您更改一些数据快点。但是,您应该开始检查RLV documentation,因为将所有内容粘贴到此答案中将会非常庞大​​。

第二种方法是在 IQ 前面设置第二个数据库,它为 IQ 完成所有 OLTP 工作,并在以后定期与 IQ 同步。只有在您的 OLTP 数据库中只需要一小部分数据时,这种方法才能正常工作。然而,这个想法类似于 RLV 正在做的事情,但是 DIY 并且它在 IQ

【讨论】:

    【解决方案2】:

    如果您的设置允许,您可以使用INSERT DELAYED 命令

    当客户端使用 INSERT DELAYED 时,它会在 一次,当表不在时,该行排队等待插入 由任何其他线程使用。

    http://dev.mysql.com/doc/refman/5.6/en/insert-delayed.html

    【讨论】:

    • 我正在使用sybase iq数据库
    猜你喜欢
    • 1970-01-01
    • 2013-09-01
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 2020-07-31
    • 1970-01-01
    • 2017-04-29
    相关资源
    最近更新 更多