是否可以在PHP中创建和运行线程?

时间:2012-07-11 14:18:00

标签: php

当显示PHP页面时,我想启动一个线程,搜索在MySQL表格列中输入的最后一个值,这样文本输入字段的值应该是最后一个值加1(它是一个数字)。我想要一个线程,因为页面可能会显示很长一段时间,在此期间该列可能已经多次更新,所以我想在每个时间段的时间段内获取值。单击提交按钮时,该值应该是列中的最后一个。这可能吗?


考虑这种情况:

一个用户显示该页面,因此该字段包含递增的值。然后另一个用户显示相同的页面,因此该字段也包含相同的递增值。当他们提交表单然后存在并发问题,因为他们提交相同的递增数据!那么如何解决这种情况呢?

2 个答案:

答案 0 :(得分:3)

  

一个用户显示该页面,因此该字段包含递增的值。然后另一个用户显示相同的页面,因此该字段也包含相同的递增值。当他们提交表单然后存在并发问题,因为他们提交相同的递增数据!那么如何解决这种情况呢?

您将无法及时了解最高价值的所有可能变化。定期获取值的基于Ajax的解决方案将不够快速和可靠。如果最高值在我的请求进入服务器所需的100毫秒内发生了变化,会发生什么?如果用户的网络连接暂时关闭,他点击“保存”,两个值最终会相互覆盖怎么办?

通常的解决方案是确定不在用户界面中的最高值,而是在将记录存储在数据库中时 。自动实现此效果的一种方法是在数据库中使用自动增量字段。

如果绝对需要向用户显示当前值,则需要采用某种锁定机制。 IE浏览器。确定当前最高值,并为当前用户保留该值,直到他们保存记录或离开页面。但是,根本无法以100%可靠的方式向每个用户显示最高电流值。你将以这种方式以冲突结束。喜欢@ N.B。在评论中说,你可能应该重新考虑你的设计。

答案 1 :(得分:0)

您可以通过AJAX轻松地通过每隔1分钟异步调用数据库或控制器 - 或者在特定的鼠标事件上 - 并返回JSON数据或带有显示数据的视图来实现。许多流行的社交网站都是这样做的,以便在其主页上显示最新的Feed /数据。

有关详情:http://ajaxpatterns.org/Periodic_Refresh

相关问题